From: <dan...@ya...> - 2002-03-13 10:20:16
|
And this brings us back to the original post that started this thread. Should mingw math.h header define PI as a manifest constant. This example, IMO, indicates the value of having a constant defined as a macro, rather than a function. If we do this: #define PI 3.1415926535897932 or even this (ugh) /* in library */ double __d; unsigned short __s[4]; } __PI = { __s:{0x2d18,0x5444,0x21fb,0x4009}}; /* in header */ extern const double __PI; #define PI __PI; we get the same value for PI no matter how it is used. A "constant" whose precision is dependent on surrounding code is not much good to me. I would rather have less precision that I know about rather than try to figure out why I get different answers with different levels of optimisation. My two cents. I think we should define PI and friends as constants (the simple way) Having a mingw PI the same as an i386 glibc (or newlib or cephes) PI is a good thing. Danny --- Wu Yongwei <ad...@ne...> wrote: > I found a way to simulate the inline sin of MSVC: > > #include <stdio.h> > //#include <math.h> > #include "pi.h" > > #define sin(x) \ > ({ double v; __asm ("fsin" : "=&t" (v) : "0" (x)); v; }) > > int main() > { > //printf("%.16g\n", 3 * pi() / 8.0); > printf("%.16g\n", sin(pi())); > printf("%.16g\n", sin(3.1415926535897932)); > return 0; > } > > -5.421010862427522e-020 > 1.224606353822377e-016 > > However, uncomment the first printf and you will not see the improved > result > of sin(pi) because GCC stored pi in memory already. I really don't like > this. I am now assured that a floating-point-intensive application should > use MSVC indeed. > > (BTW, vim seems to think the strange definition of sin is invalid.) > > Best regards, > > Wu Yongwei > > > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users http://movies.yahoo.com.au - Yahoo! Movies - Vote for your nominees in our online Oscars pool. |