cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> #include <complexcw.h> extern float complex cexpm1f (float complex z); extern double complex cexpm1 (double complex z); extern long double complex cexpm1l (long double complex z); extern __float80 complex cexpm1w (__float80 complex z); extern __float128 complex cexpm1q (__float128 complex z); extern long_long_double complex cexpm1ll (long_long_double complex z); extern decimal_float complex cexpm1df (decimal_float complex z); extern decimal_double complex cexpm1d (decimal_double complex z); extern decimal_long_double complex cexpm1dl (decimal_long_double complex z); extern decimal_long_long_double complex cexpm1dll (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.