首页 文章

双 - IEEE 754替代品

提问于
浏览
6

根据以下网站:http://en.cppreference.com/w/cpp/language/types

“双精度浮点型 . 通常是IEEE-754 64位浮点型” .

它说"usually" . C double 可以使用哪些其他可能的格式/标准?什么编译器使用IEEE格式的替代品?还是建筑?

4 回答

  • 3

    Vaxen,Crays和IBM大型机,仅列举了一些仍然合理使用的产品 . 大多数(全部?)那些现在也可以做IEEE浮点数,但有时只有一个特殊的附加组件 . 在其他情况下(IBM),IEEE算法可能会带来显着的速度损失 .

    对于较旧的机器,大多数大型机(Unisys,控制数据等)使用独特的浮点格式,其中大多数甚至不像IEEE,更不用说实际符合 .

  • 0

    对于简短的历史课程,您可以查看Intel Floating Point Case Study .

    英特尔编译器在优化时默认启用一个选项,启用所谓的fast-math feature . 这使得数学运算更快,但严格遵守IEEE标准 . 人们可以严格遵守fp-model option标准 .

    我相信如果一个人愿意放弃严格遵守IEEE标准,那么NVidia GPU的CUDA语言也会有一个明显更快的数学库 . 这不仅使数学运算更快,而且特别减少了用于超越函数的寄存器数量 .

    是否需要合规取决于具体情况 . 我们遇到了英特尔优化问题,并且必须打开 fp-model strict 选项以确保使用双精度数学运算得到正确的结果 .

  • 6

    现在大多数计算机似乎都使用IEEE-754 . 但是之前似乎已有替代品 . 之前使用过量128和打包BCD等格式(http://aplawrence.com/Basics/floatingpoint.html) . 维基百科条目也有一些列出http://en.wikipedia.org/wiki/Floating_point

  • 2

    在回答"What other possible formats/standard could C++ double use?"时,可能有必要补充一点:Atmel AVR的gcc(8位数据CPU,在某些Arduinos中使用)并没有将 double 实现为64位 .

    GCC wiki, avr-gcc page,特别是它所说的'double' subsection of 'Deviations from the Standard'

    double只有32位宽,并以与float相同的方式实现

    我相信其他CPU有类似的实现,但我找不到它们 .

相关问题