传递给python时,f2py失去双精度

时间:2014-05-06 21:03:46

标签: python fortran precision double-precision f2py

我似乎无法使用f2py创建我的模块,以便在传递回python时将数字保持为双精度。一个最小的例子,文件为fmodules.f90:

      subroutine example(output)
              implicit none
              double precision :: output
cf2py         intent(out) :: output
              output = 1.3
      end subroutine example

然后我用f2py:

创建模块
$ f2py -c -m fmodules fmodules.f90

并从python中调用它:

>>> from fmodules import example
>>> example()
1.2999999523162842

根据我的统计,这大约是8位精度。我的印象是双精度应该给出16左右。我已经尝试了我能想到的所有排列,包括使用.f2py_f2cmap文件。关于我缺少的任何想法?

1 个答案:

答案 0 :(得分:4)

您应该使用双精度

在Fortran代码中设置输出
output = 1.3d0

在Fortran 1.3中是单精度常量。