cc [ flags ] -I/usr/local/include file(s) -L/usr/local/lib -lmcw [ ... ] #include <mathcw.h> extern float ipowf (float x, float y); extern double ipow (double x, double y); extern long double ipowl (long double x, long double y); extern __float80 ipoww (__float80 x, __float80 y); extern __float128 ipowq (__float128 x, __float128 y); extern long_long_double ipowll (long_long_double x, long_long_double y); extern decimal_float ipowdf (decimal_float x, decimal_float y); extern decimal_double ipowd (decimal_double x, decimal_double y); extern decimal_long_double ipowdl (decimal_long_double x, decimal_long_double y); extern decimal_long_long_double ipowdll (decimal_long_long_double x, decimal_long_long_double y);
NB: Functions with prototypes containing underscores in type names may be available only with certain extended compilers.
Caution: Because the error magnification in exponential and power functions is proportional to the exponent, for powers that are too large or too small to represent exactly, brute-force multiplication may introduce substantial rounding errors, and the companion function family, pow(x,y), is likely to be more accurate.
Although 0**0 is mathematically undefined, it is often programmatically convenient to have the rule that 0**finite and 0**infinite are always 1, and most C library implementations, including this one, behave that way, even though the C89 and C99 Standards allow 0**0 to be treated as an error.