6

f2py の最近のバージョンは、配列値の fortran 関数のラップをサポートしていますか? 一部の古いドキュメントでは、これはサポートされていませんでした。今はどうですか?

たとえば、次の関数を func.f95 として保存してみましょう。

function func(x)
    implicit none
    double precision :: x(:),func(size(x))
    integer :: i
    do i=1,size(x)
        func(i) = i*x(i)
    end do
end function

これをコンパイルしますf2py --fcompiler=gnu95 -c -m func func.f95

次に、次の python コードを test_func.py とします。

import func
from numpy import array

x = array(xrange(1,10),dtype='float64')
print 'x=',x

y = func.func(x)
print 'func(x)=',y

からの出力
python test_func.py

x= [ 1.  2.  3.  4.  5.  6.  7.  8.  9.]
Segmentation fault
4

1 に答える 1

3

f2pyのメカニズムは、FortranサブルーチンをPython関数に変換します。Fortran関数をPython関数に変換する方法を理解していません。私は、すべてのFortran関数をサブルーチンでラップする必要があること、またはさらに良いことに、それらをサブルーチンとして書き直す必要があることを発見しました。

于 2012-06-06T13:52:33.183 に答える