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.