[Bug target/59666] IBM long double arithmetic results invalid in non-default rounding modes

vincent-gcc at vinc17 dot net gcc-bugzilla@gcc.gnu.org
Fri Mar 4 02:35:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59666

--- Comment #5 from Vincent Lefèvre <vincent-gcc at vinc17 dot net> ---
(In reply to joseph@codesourcery.com from comment #4)
> For a non-IEEE type where the accuracy is specified as within 3ulp 
> (depending on the operation in question), there is no definition of what 
> honouring the rounding mode means.  Such types fall within 5.2.4.2.2#6, 
> "The accuracy of the floating-point operations (+, -, *, /) ... is 
> implementation-defined ... The implementation may state that the accuracy 
> is unknown.".

But directed rounding mode requirements are different from just accuracy
requirements. For instance, with rounding toward negative infinity, one must
have ROUND(x) ≤ x. This allows one to get guaranteed bounds and to do interval
arithmetic, which is here more important than accuracy. If the rounding
direction is not honored, one no longer gets guaranteed bounds/enclosures.

> Note the proposed TC for DR#441: "The value of FLT_ROUNDS applies to all 
> IEC 60559 types supported by the implementation, but need not apply to 
> non-IEC 60559 types.".

IMHO, this is a bad proposition. This would mean that a user who switches from
double to long double could get incorrect results (enclosures) as a
consequence.


More information about the Gcc-bugs mailing list