繁体   English   中英

f2py外部函数始终返回零

[英]f2py external function always returns zero

我需要对fortran90代码进行python绑定,该代码将回调函数作为其输入之一。 我尝试遵循scipy网页上的示例,并创建了一个helloworld文件helloworld.f90 ,如下所示:

SUBROUTINE helloworld(fun,a,b)
    external fun
    real*8, intent(in) :: a
    real*8, intent(out) :: b
    print*, 'Hellow world'
    print*, a
    b = fun(a)
    print*, b
END

我用f2py -c -m hello helloworld.f90编译。 编译工作没有错误,但是python代码无法正常运行:从python进行的函数调用始终返回0(!?):

In [1]: import hello
In [2]: def fun(x): return x**2
In [3]: hello.helloworld(fun,2.)
Hellow world
  2.0000000000000000     
  0.0000000000000000     
Out[3]: 0.0

有人知道为什么在fortran中将fun(2.)评估为0吗? 我的编译器有问题吗?

我发现了问题...由于所需的8字节精度(为什么?),似乎fortran将python float 2.强制转换为0。 无论如何,在上面的代码中将real*8更改为real解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM