根据以下站点:http://en.cppreference.com/w/cpp/language/types
“双精度浮点类型。通常为IEEE-754 64位浮点类型”。
上面写着“通常”。C++ double
还可以使用哪些其他可能的格式/标准?哪个编译器使用IEEE格式的替代格式?或者架构?
发布于 2012-02-24 02:15:26
Vaxen、Cray和IBM大型机,仅举几个仍在相当广泛使用的例子。大多数(全部?)其中一些现在也可以做IEEE浮点运算,但有时只能用一个特殊的附加组件。在其他情况下(IBM),IEEE算法可能会带来显着的速度损失。
对于较旧的计算机,大多数大型机(Unisys、控制数据等)使用独特的浮点格式,其中大多数甚至不太像IEEE,更不用说实际上符合了。
发布于 2012-02-24 02:14:05
对于简短的历史课程,您可以查看Intel Floating Point Case Study。
英特尔编译器在优化时有一个默认打开的选项,该选项启用所谓的fast-math feature。这使得计算速度更快,但会降低对IEEE标准的严格遵从性。可以强制严格遵守fp-model option的标准。
我相信IEEE的CUDA语言也有一个明显更快的数学库,如果有人愿意放弃严格遵守NVidia标准的话。这不仅使数学运算速度更快,而且特别减少了用于超越函数的寄存器的数量。
是否需要遵从性取决于具体情况。我们遇到过英特尔优化方面的问题,必须启用fp-model strict
选项,以确保双精度数学运算的正确结果。
发布于 2012-02-24 02:24:16
似乎现在大多数计算机都使用IEEE-754。但之前似乎已经有了替代方案。像Exced128和packed BCD这样的格式已经被使用过了(http://aplawrence.com/Basics/floatingpoint.html)。维基百科的词条也列出了一些http://en.wikipedia.org/wiki/Floating_point
https://stackoverflow.com/questions/9418505
复制相似问题