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

--- Comment #3 from Matthias Kretz (Vir) <kretz at kde dot org> ---
I should be more precise. Take this test case:

int e = 69;
int main() {
  __ibm128 a = -__builtin_ldexpl(
     
1.9446689187403240306919491832695730985733566864714824565497322973045558e+00l,
e);
  __ibm128 tmp;
  __ibm128 aa = __builtin_modfl(a, &tmp);
  if (aa >= 1) {
    __builtin_printf("modfl: %Lf\n", aa);
    __builtin_printf("copysign(x-trunc(x), x): %Lf\n", __builtin_copysignl(a -
__builtin_truncl(a), a));
    return 1;
  }
  return 0;
}

it prints:

modfl: 43227.412695                                                             
copysign(x-trunc(x), x): -0.587305

Reply via email to