fortran和python的区别_Fortran和Python之间的精度差异(sin函数)

1586010002-jmsa.png

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值