Is there an open-source c/c++ implementation of IEEE-754 operations? [closed]

China☆狼群 提交于 2019-12-03 10:37:06

I believe the C libraries SoftFloat and fdlibm are suitable for what you are looking for. Others include Linux (GNU libc, glibc) or *BSD libc's math functions. Finally, CRlibm should also be of interest to you.

Ulrich Drepper has a interesting look at different math libraries, that might be also worth reading through.

I must disappoint you: There is practically none.

While technically there are IEEE-754 compliant systems because they do not implement non-required features described in the standard, a reference implementation allowing

  • access to all rounding modes
  • support signalling NaNs
  • support trapping of all five traps

does not exist in the standard languages. This causes recurring woes of William Kahan, the main force behind the standard and its adaption on the Intel processors.

I don't know if there are some esoteric languages which do support them, but I can rule out Java, C#, C++, Fortran.

EDIT: While there is a lack of compiler support, I advise Hausers SoftFloat implementation given by mctylr. Hauser knows what he is doing.

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

A rather confusing question; in C++ it is assumed this sort of detail is taken care of by the hardware or the compiler. So, in C++ floating-point addition would be

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

I'm sure this is not what you actually meant; perhaps you'd benefit from this page which tries to emulate IEEE-754-compliant hardware in javascript?

Balasarius

one work around for you could python. python has a function that can convert IEEE-754 32/64 bit precision HEX float point

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

You can either write you app in python or just create a python function and call it in C/C++

I'm unsure how to call python from C/C++ but it is possible. Calling Python functions from C++

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!