decimal floating point support for C++

Janis Johnson janis187 at us.ibm.com
Tue Aug 4 17:09:38 UTC 2009


I'm investigating support for decimal floating-point arithmetic in G++
and sent similar mail to the GCC mailing list last month, where Jason
Merrill suggested that this might be a more appropriate discussion
venue.

GCC currently supports decimal floating point functionality in C for
several targets based on ISO/IEC TR 24732.  The C support adds 3 new
scalar types: _Decimal32, _Decimal64, and _Decimal128.  With minor
changes to GCC, including support for mangling those types, and
changes to tests to define typedefs to the underlying type modes, G++
already passes almost all of GCC's decimal float tests for C.

The C++ standards committee defined quite different support for C++ in
ISO/IEC DTR 24733, "Extension for the programming language C++ to
support decimal floating-point arithmetic".  It defines the support in
terms of classes decimal32, decimal64, and decimal128 in namespace
decimal, defined in <decimal>, and allows decimal floating-point
literals as a conforming extension.

If the libstdc++ implmentation of the decimal classes can depend on
compiler support for the decimal float type modes then the support is
straightforward, with classes that contain a data member of the
appropriate mode.  The only tricky part I've run into is passing
arguments and return values in a way that is compatible with C, since
one is a scalar and the other is a class.  This affects not just
intercallability between user code written in C and C++, but also
access to the decimal float math functions defined for both C and C++.

Given that libstdc++ is used with compilers other than G++, is it
reasonable to depend on non-standard C++ compiler support?  An
alternative is for the libstdc++ support to use decNumber and/or
libbid libraries, but that would be less efficient and more time-
consuming to implement.

Both TRs are available online:
C:   http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1312.pdf
C++: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2849.pdf
  
Janis Johnson
IBM Linux Technology Center





More information about the cxx-abi-dev mailing list