https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79528
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- On Wed, 15 Feb 2017, jakub at gcc dot gnu.org wrote: > It seems besides conversion from integer to decimal{32,64} also all the > arithmetics e.g. in real_arithmetics are performed in _Decimal128 precision > and > rounded according to that and then rounded again to the corresponding > _Decimal{32,64} type. As the precision in decimal digits of _Decimal64 is > just > 16 and _Decimal128 is 34 decimal digits, perhaps it is just fine for +/-, but > not sure about multiplication or FMA (if we ever allow that for decimal > float). Multiplication is trivially OK (as the product of any two _Decimal64 numbers is exactly representable in _Decimal128). Division and square root may well be OK but would require a more detailed analysis. Double rounding for fma is never OK (in round-to-nearest) as the product of two values can be an exactly half-way value, which is then added to something much smaller.