[PPL-devel] More floating point problems on the Alpha

Abramo Bagnara abramobagnara at tin.it
Mon Sep 22 21:56:30 CEST 2008


Roberto Bagnara ha scritto:
> [Thanks to all those who responded to my previous problem-report
> wrt to the IEEE inexact-flag on the Alpha.  We have filed a bug
> report for that one.]
> 
> Hi there,
> 
> we keep finding problems on the Alpha, and we are unsure about
> what is going on.  I anticipate that the present problem does
> not seem to be a compiler issue (except that the -mieee-with-inexact
> option promises full compliance with the IEEE floating point
> standard).  However, I hope some Alpha expert can advise about
> how to investigate the issue further.
> 
> Here are the details:
> 
> $ cat bug.c
> #include <stdio.h>
> 
> float f = 1.4e-45;
> double d = 1e-300;
> 
> int
> main() {
>    if (1.4e-45f > 1e-300)
>      printf("compile-time test says 1.4e-45f > 1e-300\n");
>    if (f < d)
>      printf("    run-time test says 1.4e-45f < 1e-300\n");
>    return 0;
> }
> 

The problem come from the fact that for astonishing reasons 1.4e-45f is
not seen as 1.4e-45.

So, adding

  printf("%g\n", f);

before

  return 0;

we get

$ ./a.out
compile-time test says 1.4e-45f > 1e-300
    run-time test says 1.4e-45f < 1e-300
2.65249e-315

Note that 2.65249e-315 is not representable in ieee754/iec559 32 bit
floating point.

32 bit floats are emulated on Alpha? There is an huge bug in FP emulation?

-- 
Abramo Bagnara

Opera Unica                          Phone: +39.0546.656023
Via Borghesi, 16
48014 Castel Bolognese (RA) - Italy



More information about the PPL-devel mailing list