On Thu, 13 Sep 2012, Vincent Lefevre wrote: > But if you want an example, I don't think that the formatOf > arithmetic operations (IEEE 754-2008 ยง5.4.1 -- that's a "shall") > are implemented by GCC, either for binary or for decimal, say > add two _Decimal128 numbers and round to _Decimal64 directly > (with a single rounding).
For binary floating point, the draft C bindings (I'm looking at WG14 N1605, which is just a draft of the first part of what's supposed to end up as a five-part document) defines such operations as library operations (e.g. float fadd(double x, double y);) rather than compiler ones (although of course the compiler might have corresponding built-in functions). N1582 indicates that names such as _Float32 f32addf64(_Float64 x, _Float64 y); would be used for the functions with specific IEEE types - so I guess d64addd128 for the example you give. The draft C bindings for IEEE 754-2008 are at a sufficiently early stage that before putting anything in mainline glibc it would be important to look carefully at how likely any incompatible changes would be (more likely for some functions than for others, I expect). Of course they will only go in (for either GCC or glibc) if someone contributes implementations, and they would be a sufficiently large project that they aren't particularly likely to be done as a spare-time project. (Implementing fadd itself probably isn't hard; given exception and rounding mode support you should be able to do it with round-to-odd as described by Boldo and Melquiond - and some processors (ia64?) may have direct support for it. But there are lots of new functions, that's just one.) -- Joseph S. Myers jos...@codesourcery.com