是否有IEEE-754操作的开源c / c ++实现?

时间:2010-02-02 19:01:20

标签: c++ open-source floating-point ieee-754

我正在寻找IEEE-754操作的参考实现。有这样的事吗?

4 个答案:

答案 0 :(得分:8)

我相信C库SoftFloatfdlibm适合您所寻找的内容。其他包括Linux(GNU libc,glibc)或* BSD libc的math functions。最后,CRlibm也应引起您的兴趣。

Ulrich Drepper有一个有趣的look at different math libraries,也许值得一读。

答案 1 :(得分:3)

我必须让你失望:几乎没有。

虽然技术上有符合IEEE-754标准的系统,但它们确实如此 没有实现标准中描述的非必需功能,参考 实施允许

  • 访问所有舍入模式
  • 支持信令NaNs
  • 支持捕获所有五个陷阱
标准语言中不存在

。这会引起反复出现的困境 威廉卡汉,标准及其适应背后的主要力量 在英特尔处理器上。

我不知道是否有一些支持他们的深奥语言, 但我可以排除Java,C#,C ++,Fortran。

编辑:虽然缺乏编译器支持,但我建议使用Hausers SoftFloat 由mctylr给出的实现。豪瑟知道他在做什么。

http://portal.acm.org/citation.cfm?id=227699.227701&coll=portal&dl=ACM&CFID=77938829&CFTOKEN=18578907

答案 2 :(得分:1)

一个相当令人困惑的问题;在C ++中,假设硬件或编译器负责这种细节。因此,在C ++中,浮点加法将是

float a = 1.0;
float b = 2.0;
float c = a + b;

我确定这不是你的意思;也许你会从this page中受益,它试图在javascript中模拟符合IEEE-754标准的硬件?

答案 3 :(得分:-2)

你可以为python做一个解决方法。 python有一个可以转换IEEE-754 32/64位精度HEX浮点

的函数
   import struct
   struct.unpack('!f', '41973333'.decode('hex'))[0]

您可以在python中编写应用程序或只创建一个python函数并在C / C ++中调用它

我不确定如何从C / C ++调用python,但这是可能的。 Calling Python functions from C++