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

            Bug ID: 89540
           Summary: roundq(x) returning value with non-zero fractional
                    part
           Product: gcc
           Version: 8.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libquadmath
          Assignee: unassigned at gcc dot gnu.org
          Reporter: andres_takach at mentor dot com
  Target Milestone: ---

Created attachment 45859
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45859&action=edit
Test:  c++  round_bug.cxx -lquadmath

roundq should return an integer value (no fractional part), but it returns
values with fractional part. The incorrect behavior seems to occur when values
are big enough ( 2^31).

The testcase has x = 2^31 + 0.5. In this case roundq(x) returns x, instead of
2^31 + 1.

To exercise:

c++ round_bug.cxx -lquadmath

The output is (x, and roundq(x) are printed in both raw hex and decimal):

401e0000000100000000000000000000
2147483648.50000000000000000000000000000000000000000000000000
roundq(x) returns a value with fractional part
401e0000000100000000000000000000
2147483648.50000000000000000000000000000000000000000000000000


Incorrect behavior has also been confirmed with 6.2.0 and 4.9.2.

Reply via email to