cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> #include <cxcw.h> extern void cxexpf (cx_float result, cx_float z); extern void cxexp (cx_double result, cx_double z); extern void cxexpl (cx_long_double result, cx_long_double z); extern void cxexpw (cx_float80 result, cx_float80 z); extern void cxexpq (cx_float128 result, cx_float128 z); extern void cxexpll (cx_long_long_double result, cx_long_long_double z); extern void cxexpdf (cx_decimal_float result, cx_decimal_float z); extern void cxexpd (cx_decimal_double result, cx_decimal_double z); extern void cxexpdl (cx_decimal_long_double result, cx_decimal_long_double z); extern void cxexpdll (cx_decimal_long_long_double result, cx_decimal_long_long_double 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.
The cx family of functions provide limited support for complex arithmetic when compiler or language support for a complex type is lacking.