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

--- Comment #1 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Thanks for the report. So apparently, on powerpc64le-unknown-linux-gnu, long
double division of 1.0L by 3.0L with rounding mode set to "down" is incorrect.

Can you compile and run the following C test case?

$ cat z.c 
#include <fenv.h>
#include <stdio.h>

int main (void)
{
  long double x1, x2, x;

  fesetround (FE_UPWARD);
  x1 = 1;
  x = 3;
  x1 = x1 / x;

  fesetround (FE_DOWNWARD);
  x2 = 1;
  x = 3;
  x2 = x2 / x;

  printf ("%.40Lg\n", x1);
  printf ("%.40Lg\n", x2);
}
$ gcc z.c -lm && ./a.out 
0.3333333333333333333423683514373792036167
0.3333333333333333333152632971252415927665


Above is the result on x86_64-linux, so the outcome shouldn't be identical, but
the two numbers output should not be equal.

Reply via email to