cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> #include <complexcw.h> extern float complex cexpf (float complex z); extern double complex cexp (double complex z); extern long double complex cexpl (long double complex z); extern __float80 complex cexpw (__float80 complex z); extern __float128 complex cexpq (__float128 complex z); extern long_long_double complex cexpll (long_long_double complex z); extern decimal_float complex cexpdf (decimal_float complex z); extern decimal_double complex cexpd (decimal_double complex z); extern decimal_long_double complex cexpdl (decimal_long_double complex z); extern decimal_long_long_double complex cexpdll (decimal_long_long_double complex z);
NB: Functions with prototypes containing underscores in type names may be available only with certain extended compilers.
Imaginary parts of large magnitude require argument reduction in the trigonometric functions, and most implementations of those functions fail to provide exact argument reduction, producing wildly-inaccurate trigonometric functions that propagate to the complex exponential.
Trigonometric argument reduction in the MathCW library is always exact, so the components of the complex exponential should suffer at most three rounding errors each.
When compiler support for complex types is lacking, consider using the cx family of functions instead.