------- Comment #2 from dominiq at lps dot ens dot fr 2007-03-13 10:58 ------- Subject: Re: __builtin_cexpi is broken on Darwin
> you should not use __builtin_cexpi if neither sincos nor cexp is available. Yes indeed, but an ICE is certainly not the best way to say it! Now I have tested __builtin_cexpi, not because I want to use it, but because it is used by the optimizer with a wrong result I would like to see fixed ASAP. Note that __builtin_cexp is available on Darwin and seems to work: #include <math.h> #include <stdio.h> int main() { __complex__ double x; __real__ x = -1.0; __imag__ x = 0.0; __complex__ double t = __builtin_clog(x); double tmp = 0.5 * (__imag__ t); x = __builtin_cexp(0.5*t); printf("%g %g\n", (__real__ x), (__imag__ x)); printf("%g %g\n", cos(tmp), sin(tmp)); } gives with gcc and with or without optimization: 6.12323e-17 1 6.12323e-17 1 while when compiled with g++ -O1, it gives: 6.12323e-17 1 -1 1.22465e-16 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31161