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

            Bug ID: 112367
           Summary: wrong rounding of sum of floating-point constants
           Product: gcc
           Version: 6.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zimmerma+gcc at loria dot fr
  Target Milestone: ---

The following code:

#include <stdio.h>
#include <fenv.h>

#pragma STDC FENV_ACCESS ON

int main()
{
  fesetround (FE_UPWARD);
  float x = 0x1.e90026p+4f + 0x1.fp-21;
  printf ("x=%a\n", x);
}

yields on cfarm117 with gcc 6.3.0:

zimmerma@cfarm117:~/core-math$ gcc -frounding-math e.c -lm; ./a.out
x=0x1.e90026p+4

whereas one would expect 0x1.e90028p+4.

I don't have access to an ARM machine with a recent version of gcc.

Reply via email to