exp(3M) exp(3M)
NAME
exp, log, log10, pow, powr, sqrt, cbrt, expf, logf, log10f,
powf, sqrtf - exponential, logarithm, power, square root,
cube root functions
SYNOPSIS
#include <math.h>
double exp (x)
double x;
double log (x)
double x;
double log10 (x)
double x;
double pow (x, y)
double x, y;
double powr (x, y)
double x, y;
double sqrt (x)
double x;
double cbrt (x)
double x;
float expf (float x)
float logf (float x)
float log10f (float x)
float powf (float x, float y)
float sqrtf (float x)
DESCRIPTION
exp and expf return e to the power of x.
Log and logf return the natural logarithm of x. The value
of x must be positive.
Log10 and log10f return the logarithm base ten of x. The
value of x must be positive.
Pow, powr, and powf return x to the power of y. If x is
zero, y must be positive. If x is negative, y must be an
integer.
Page 1 CX/UX Programmer's Reference Manual
exp(3M) exp(3M)
Pow uses double precision arithmetic, powr uses single pre-
cision arithmetic, and powf uses a combination of single and
double precision arithmetic. A loss in single precision
accuracy may be experienced with the powr function, but the
powf function minimizes such loss.
Sqrt and sqrtf return the zero or positive square root of x.
The value of x must be zero or positive.
Cbrt returns the cube root of x.
DIAGNOSTICS
All systems accept IEEE floating point reserved values. The
use of these values may cause exception conditions.
For the double precision functions:
EXP: result errno
____________________________________________
overflow +HUGE ERANGE no message
underflow 0.0 ERANGE no message
x = +infinity +HUGE ERANGE no message
x = -infinity 0.0 ERANGE no message
x = NaN qNaN EDOM no message
LOG,LOG10: result errno
__________________________________________________________
x < 0.0 -HUGE EDOM DOMAIN error message
x = 0.0 -HUGE EDOM SING error message
x = +infinity +infinity not set no message
x = -infinity qNaN EDOM no message
x = NaN qNaN EDOM no message
POW,POWR: result errno
___________________________________________________________
overflow +HUGE ERANGE no message
underflow -HUGE ERANGE no message
x = 0.0, y <= 0.0 0.0 EDOM DOMAIN error message
x < 0.0, y not int 0.0 EDOM DOMAIN error message
x = NaN or y = NaN qNaN EDOM no message
SQRT: result errno
__________________________________________________________
x < 0.0 0.0 EDOM DOMAIN error message
x = +infinity +infinity not set no message
x = -infinity 0.0 EDOM no message
x = NaN qNaN EDOM no message
CBRT: result errno
______________________________________________
Page 2 CX/UX Programmer's Reference Manual
exp(3M) exp(3M)
x = infinity infinity not set no message
x = NaN qNaN EDOM no message
In programs linked in one of the ANSI C compilation modes,
messages will not be produced under any circumstances.
In programs linked in one of the ANSI C compilation modes,
and in programs linked in the 88open OCS-compliant mode,
exp, log, log10, and pow return HUGE_VAL instead of HUGE.
These error-handling procedures may be changed with the
matherr(3M) function, if the program is not linked in ANSI C
conforming mode (-Xc option). See hc(1) for more information
about compilation modes.
For the single precision functions:
EXPF: result errno
__________________________________________________
overflow +infinity OVERFLOW no message
underflow 0.0 UNDERFLOW no message
x = +infinity +infinity not set no message
x = -infinity 0.0 not set no message
x = NaN qNaN DOMAIN no message
LOGF,LOG10F: result errno
________________________________________________
x < 0.0 qNaN DOMAIN no message
x = 0.0 -infinity not set no message
x = +infinity +infinity not set no message
x = -infinity qNaN DOMAIN no message
x = NaN qNaN DOMAIN no message
POWF: result errno
____________________________________________________
overflow qNaN OVERFLOW no message
underflow qNaN UNDERFLOW no message
x = 0.0, y <= 0.0 qNaN DOMAIN no message
x < 0.0, y not int qNaN DOMAIN no message
x = NaN or y = NaN qNaN DOMAIN no message
SQRTF: result errno
________________________________________________
x < 0.0 qNaN DOMAIN no message
x = +infinity +infinity not set no message
x = -infinity qNaN DOMAIN no message
x = NaN qNaN DOMAIN no message
In programs linked in one of the ANSI C compilation modes,
expf, logf, log10f, powf, and sqrtf set errno to EDOM
instead of DOMAIN, ERANGE instead of UNDERFLOW, and ERANGE
instead of OVERFLOW.
Page 3 CX/UX Programmer's Reference Manual
exp(3M) exp(3M)
The matherr(3M) function has no effect on the single preci-
sion functions.
PERFORMANCE IMPROVEMENTS
These functions check the integrity of their arguments for
mathematical validity and conformance to the IEEE Floating-
Point Arithmetic standard's definition of numbers. They
also maintain high accuracy of computations through occa-
sional use of higher precision arithmetic and lengthier com-
putations designed to minimize round-off errors. The
library libm.a contains these robust functions.
An alternate math library is provided, libM.a, which offers
increased performance at the expense of argument checking
and accuracy. The checks for mathematical validity and IEEE
numbers are not performed on these functions in this addi-
tional library. Checks at the boundary conditions of
minimum and maximum representable values, however, are con-
ducted. The accuracy losses are usually never more than 1-
bit differences when compared with the robust versions.
This alternate library is intended for use when the charac-
teristics of the arguments are well-understood and higher
performance is preferred over increased accuracy. One
consequence of these less-robust functions is that erroneous
arguments are not caught and may produce meaningless
answers.
SEE ALSO
matherr(3M), hc(1).
Page 4 CX/UX Programmer's Reference Manual