Is there an open-source c/c++ implementation of IEEE-754 operations? [closed]
开发者_如何转开发
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this questionI am looking for a reference implementation of IEEE-754 operations. Is there such a thing?
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?
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++
精彩评论