Mail Archives: cygwin/1997/04/22/18:15:04
Your test case works fine under upcoming beta 18...
--
Geoffrey Noer
noer AT cygnus DOT com
> The small, attached program demonstrates a bug with beta-16 gcc.
> If the optimizer is set to '-O' the program executes correctly.
> If the optimizer is set to '-O2' or '-O3' the program generates an
> exception.
>
> Jeff Deifik jdeifik AT weasel DOT com turbo AT weasel DOT com
>
> /* y.c, demonstrates a bug with gnu-w32 beta 16 and the optimizer... */
> /*
> To produce an exception say:
> gcc -O2 -g -c y.c -o y.o
> gcc y.o -lm -o yyy.exe
> yyy
>
> To produce no exception say:
> gcc -O -g -c y.c -o y.o
> gcc y.o -lm -o yyy.exe
> yyy
>
> */
> /* Written 11/06/96 by Jeff Deifik */
>
> #include <stdio.h>
> #include <math.h>
>
> typedef enum { False = 0, True = 1 } Boolean;
>
> float FLOAT_TO_ROUNDED_FLOAT(float);
> int flo_close(double value,double f,double clo);
>
> int main(int argc, char *argv[])
> {
> Boolean fail = False;
> double d;
> float f;
>
> d = rint(47);
> if (!flo_close(47.0f,d,0.0001f))
> { (void)printf("47 %f\n",d); fail = True; }
>
> f = FLOAT_TO_ROUNDED_FLOAT(47.0);
> if (!flo_close(47.0f,f,0.0001f))
> { (void)printf("47 %f\n",f); fail = True; }
>
> return 1;
> }
>
> /* Value is the ideal number, f is what it really is.*/
> int flo_close(double value,double f,double clo)
> {
> return(((f+clo) >= value) && ((f-clo) <= value));
> }
>
> float FLOAT_TO_ROUNDED_FLOAT(float x) { return(floor(x+0.5)); }
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".
- Raw text -