[Numpy-discussion] fortran vs numpy on mac/linux - gcc performance?

Robin robince at gmail.com
Mon Oct 19 07:24:18 EDT 2009


Forgot to include the fortran code used:

jm-g26b101:fortran robince$ cat test.f95
subroutine bincount (x,c,n,m)
    implicit none
    integer, intent(in) :: n,m
    integer, dimension(0:n-1), intent(in) :: x
    integer, dimension(0:m-1), intent(out) :: c
    integer :: i

    c = 0
    do i = 0, n-1
        c(x(i)) = c(x(i)) + 1
    end do
end


subroutine shuffle (x,s,n)
    implicit none
    integer, intent(in) :: n
    integer, dimension(n), intent(in) :: x
    integer, dimension(n), intent(out) :: s
    integer :: i,randpos,temp
    real :: r

    ! copy input
    s = x
    call init_random_seed()
    ! knuth shuffle from http://rosettacode.org/wiki/Knuth_shuffle#Fortran
    do i = n, 2, -1
        call random_number(r)
        randpos = int(r * i) + 1
        temp = s(randpos)
        s(randpos) = s(i)
        s(i) = temp
    end do
end


subroutine init_random_seed()
    ! init_random_seed from gfortran documentation
    integer :: i, n, clock
    integer, dimension(:), allocatable :: seed

    call random_seed(size = n)
    allocate(seed(n))

    call system_clock(count=clock)

    seed = clock + 37 * (/ (i - 1, i = 1, n) /)
    call random_seed(put = seed)

    deallocate(seed)
end subroutine



More information about the NumPy-Discussion mailing list