In [3]:
%install_ext https://raw.github.com/mgaitan/fortran_magic/master/fortranmagic.py
In [1]:
%load_ext fortranmagic
In [8]:
%%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
In [3]:
import numpy as np
In [9]:
x = np.asfortranarray([3,2,1])
y = fortran_bubblesort(x, x.shape[0])
print(x, y)
In [18]:
b = [3,2,1]
fortran_bubblesort(x)
In [13]:
%%fortran
SUBROUTINE fortran_sum(x, y, z)
REAL, INTENT(in) :: x,y
REAL, INTENT(out) :: z
z = x + y
END SUBROUTINE fortran_sum
In [15]:
fortran_sum(3, 4)
Out[15]:
In [ ]: