cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> #include <complexcw.h> extern float complex clogf (float complex z); extern double complex clog (double complex z); extern long double complex clogl (long double complex z); extern __float80 complex clogw (__float80 complex z); extern __float128 complex clogq (__float128 complex z); extern long_long_double complex clogll (long_long_double complex z); extern decimal_float complex clogdf (decimal_float complex z); extern decimal_double complex clogd (decimal_double complex z); extern decimal_long_double complex clogdl (decimal_long_double complex z); extern decimal_long_long_double complex clogdll (decimal_long_long_double complex z);
NB: Functions with prototypes containing underscores in type names may be available only with certain extended compilers.
If the argument in Cartesian form is z = x + y I, where x and y are real, then in polar form, z = r exp(t I), where r = |z| = cabs(z) = hypot(x, y) and t = carg(z) = atan2(y, x). We then have clog(z) = clog(r exp(t I)) = log(r) + t I. Accuracy of the complex logarithm function then depends on that of three real functions.
When compiler support for complex types is lacking, consider using the cx family of functions instead.