Fortran和Python之间的精确差异(sin函数)

时间:2017-02-25 22:29:23

标签: python fortran precision sin

在使用sinus函数时,我发现python和Fortran之间存在差异。有人可以解释一下这个吗?

在python中:

      import math
      print(math.sin(6.28318530717959))
      >> 3.3077843189710302e-15

in fortran90:

      print*, sin(6.28318530717959d0)
      >> 3.3077720792452914E-15

编辑: 由于它似乎是Fortran编译器问题,我使用g95和

       g95 -O3 test.f90 -o test.exe

1 个答案:

答案 0 :(得分:-1)

根据IEEE 754的浮动表示:

In [7]: bin(3.3077720792452914e-15.view(np.uint64))
Out[7]: '0b11110011101101110010110011010000000000000000000000000000000000'

表示截尾的尾数。

In [9]: bin(3.3077843189710302e-15.view(np.uint64))
Out[9]: '0b11110011101101110010110011101100111001100111010111010001111111'

显示一个简单的。

可能是一个类型问题,在这个过程中有一个float32,即使是起源也是神秘的。