%install_ext https://raw.github.com/mgaitan/fortran_magic/master/fortranmagic.py
Installed fortranmagic.py. To use it, type: %load_ext fortranmagic
%load_ext fortranmagic
%%fortran
SUBROUTINE fortran_bubblesort(a,n)
INTEGER, INTENT(in) :: n
REAL, INTENT(in out), DIMENSION(n) :: a
REAL :: temp
INTEGER :: i, j
LOGICAL :: swapped = .TRUE.
DO j = SIZE(a)-1, 1, -1
swapped = .FALSE.
DO i = 1, j
IF (a(i) > a(i+1)) THEN
temp = a(i)
a(i) = a(i+1)
a(i+1) = temp
swapped = .TRUE.
END IF
END DO
IF (.NOT. swapped) EXIT
END DO
END SUBROUTINE fortran_bubblesort
Building module "_fortran_magic_eacc152546f5b4ce3887a88328b3b722"... Constructing wrapper function "fortran_bubblesort"... fortran_bubblesort(a,[n]) Wrote C/API module "_fortran_magic_eacc152546f5b4ce3887a88328b3b722" to file "/var/folders/5k/0pmyxbls5tg39vdv6vl3pnvh0000gn/T/tmp9uofzdg4/src.macosx-10.5-x86_64-3.4/_fortran_magic_eacc152546f5b4ce3887a88328b3b722module.c"
import numpy as np
x = np.asfortranarray([3,2,1])
y = fortran_bubblesort(x, x.shape[0])
print(x, y)
[3 2 1] None
b = [3,2,1]
fortran_bubblesort(x)
%%fortran
SUBROUTINE fortran_sum(x, y, z)
REAL, INTENT(in) :: x,y
REAL, INTENT(out) :: z
z = x + y
END SUBROUTINE fortran_sum
Building module "_fortran_magic_cbd5da19d6bdeed499c21d8d173922e1"... Constructing wrapper function "fortran_sum"... z = fortran_sum(x,y) Wrote C/API module "_fortran_magic_cbd5da19d6bdeed499c21d8d173922e1" to file "/var/folders/5k/0pmyxbls5tg39vdv6vl3pnvh0000gn/T/tmpr41j973c/src.macosx-10.5-x86_64-3.4/_fortran_magic_cbd5da19d6bdeed499c21d8d173922e1module.c"
fortran_sum(3, 4)
7.0