根据以下网站:http: //en.cppreference.com/w/cpp/language/types
"双精度浮点型.通常是IEEE-754 64位浮点型".
它说"通常".C++可以double使用哪些其他可能的格式/标准?什么编译器使用IEEE格式的替代品?还是建筑?
Vaxen,Crays和IBM大型机,仅列举了一些仍然合理使用的产品.大多数(全部?)那些现在也可以做IEEE浮点数,但有时只有一个特殊的附加组件.在其他情况下(IBM),IEEE算法可能会带来显着的速度损失.
对于较旧的机器,大多数大型机(Unisys,控制数据等)使用独特的浮点格式,其中大多数甚至不像IEEE,更不用说实际符合.
如需简短的历史课程,您可以查看英特尔浮点案例研究。
英特尔编译器在优化时有一个默认打开的选项,可实现所谓的快速数学功能。这使得数学计算速度更快,但会降低对 IEEE 标准的严格遵守。人们可以使用fp-model 选项强制严格遵守标准。
我相信,如果愿意放弃严格遵守 IEEE 标准,NVidia GPU 的 CUDA 语言也有一个明显更快的数学库。这不仅使数学计算速度更快,而且特别减少了用于超越函数的寄存器数量。
是否需要合规取决于具体情况。我们在英特尔优化方面遇到了问题,并且不得不打开该fp-model strict选项以确保双精度数学的正确结果。