I see a discrepancy between python and Fortran when using the sinus function. Could anyone shed light on this, please?
in python:
import math
print(math.sin(6.28318530717959))
>> 3.3077843189710302e-15
in fortran90:
print*, sin(6.28318530717959d0)
>> 3.3077720792452914E-15
EDIT:
As it seems to be a Fortran compiler issue, I used g95 with
g95 -O3 test.f90 -o test.exe
解决方案
According to IEEE 754 for float representation:
In [7]: bin(3.3077720792452914e-15.view(np.uint64))
Out[7]: '0b11110011101101110010110011010000000000000000000000000000000000'
shows a truncated mantissa, when
In [9]: bin(3.3077843189710302e-15.view(np.uint64))
Out[9]: '0b11110011101101110010110011101100111001100111010111010001111111'
shows a plain one.
Probably a type issue, with a float32 in the process, even the origin is mysterious.