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

Viewed 10565

I am looking for a reference implementation of IEEE-754 operations. Is there such a thing?

4 Answers

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?

Related