std::cos在 GCC与 MSVC上的结果不一致
我发现,在极少数情况下,std::cos在 MSVC和 GCC上返回不同的值。我找到了一个简洁的例子来说明这一点:https://godbolt.org/z/4e5G4fGns
在这里,
std::cos( 4.159302465318618 )
返回在最后一个比特位上不同的结果。但这随后在后续结果中会引发可见的差异。是否有办法让两个平台上的标准数学函数得到相同的结果?即使这是标准允许的,我也想知道是否有办法在不为
解决方案
IEEE 754 / IEC 60559,对大多数C++平台适用,对基本运算有“正确舍入”的要求(即误差最多为0.5 ULP),但这不适用于三角函数。
数学函数的误差可能更大,大多数实现者的目标是最大误差为1.0 ULP,这意味着不同实现之间的最终位可能不同,也不被视为错误。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。