Exact mismatch between Fortran and Python (sin function)

I see a discrepancy between python and Fortran when using the sinus function. Can anyone shed some 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: Since this is a Fortran compiler issue, I used g95 with

       g95 -O3 test.f90 -o test.exe

      

+1


source to share


1 answer


According to IEEE 754 for floating point representation:

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

      

shows a truncated mantisa when



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

      

shows simple.

Probably a type issue, with float32 in progress, even the origin is mysterious.

-1


source







All Articles