0

我正在用 Python 编写代码,调用一些用 Fortran 编写的子例程。当变量在 Fortran 中定义为:

real*8, intent(in)   :: var1,var2

并且,分别在 Python 中,

var1 = 1.0
var1 = 1.0

一切都很好。但如果我定义一个扩展实数,那就是:

real*16, intent(in)   :: var1,var2

并在 python 中使用

import numpy as np

var1 = np.float16(2)

var2 = np.float16(2)

将变量传递给 fortran 例程时,变量采用一个奇怪的数字。谁能看到我做错了什么?

4

1 回答 1

0

去年的这个 numpy 讨论线程表明 numpy 的四倍精度因机器而异。我的猜测是,您的双层数据来自两种不同语言对四精度含义的不一致。

另请注意,f2py实际上只知道<type>(kind=<precision>)哪里<type>REAL//并且是整数 1、2、4、8(参见INTEGER常见问题解答)。COMPLEX<precision>

于 2013-10-02T16:56:49.753 回答