Content-type: text/html Man page of pow

# pow

Section: Mathematical Library Functions (3M)
Updated: 12 Jul 2006

## NAME

pow, powf, powl - power function

## SYNOPSIS

```c99 [ flag... ] file... -lm [ library... ]
#include <math.h>
```

double pow(double x, double y);

float powf(float x, float y);

long double powl(long double x, long double y);

```cc [ flag... ] file... -lm [ library... ]
#include <math.h>
```

double pow(double x, double y);

float powf(float x, float y);

long double powl(long double x, long double y);

## DESCRIPTION

These functions compute the value of x raised to the power y, x **y . If x is negative, y must be an integer value.

## RETURN VALUES

Upon successful completion, these functions return the value of x raised to the power y.

For finite values of x < 0, and finite non-integer values of y, a domain error occurs and either a NaN (if representable), or an implementation-defined value is returned.

If the correct value would cause overflow, a range error occurs and pow(), powf(), and powl() return HUGE_VAL, HUGE_VALF, and HUGE_VALL, respectively.

If x or y is a NaN, a NaN is returned unless:

• If x is +1 and y is NaN and the application was compiled with the c99 compiler driver and is therefore SUSv3-conforming (see standards(5)), 1.0 is returned.

• For any value of x (including NaN), if y is +0, 1.0 is returned.

For any odd integer value of y > 0, if x is ±0, ±0 is returned.

For y > 0 and not an odd integer, if x is ±0, +0 is returned.

If x is ±1 and y is ±Inf, and the application was compiled with the cc compiler driver, NaN is returned. If, however, the application was compiled with the c99 compiler driver and is therefore SUSv3-conforming (seestandards(5)), 1.0 is returned.

For |x| < 1, if y is -Inf, +Inf is returned.

For |x| > 1, if y is -Inf, +0 is returned.

For |x| < 1, if y is +Inf, +0 is returned.

For |x| > 1, if y is +Inf, +Inf is returned.

For y an odd integer < 0, if x is -Inf, -0 is returned.

For y < 0 and not an odd integer, if x is -Inf, +0 is returned.

For y an odd integer > 0, if x is -Inf, -Inf is returned.

For y > 0 and not an odd integer, if x is -Inf, +Inf is returned.

For y < 0, if x is +Inf, +0 is returned.

For y > 0, if x is +Inf, +Inf is returned.

For y an odd integer < 0, if x is ±0, a pole error occurs and ±HUGE_VAL, ±HUGE_VALF, and ±HUGE_VALL are returned for pow(), powf(), and powl(), respectively.

For y < 0 and not an odd integer, if x is ±0, a pole error occurs and HUGE_VAL, HUGE_VALF, and HUGE_VALL are returned for pow(), powf(), and powl(), respectively.

For exceptional cases, matherr(3M) tabulates the values to be returned by pow() as specified by SVID3 and XPG3.

## ERRORS

These functions will fail if:

Domain Error The value of x is negative and y is a finite non-integer.

If the integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, the invalid floating-point exception is raised.

The pow() function sets errno to EDOM if the value of x is negative and y is non-integral.

Pole Error The value of x is 0 and y is negative.

If the integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, the divide-by-zero floating-point exception is raised.

Range Error The result overflows.

If the integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, the overflow floating-point exception is raised.

The pow() function sets errno to EDOM if the value to be returned would cause overflow.

## USAGE

An application wanting to check for exceptions should call feclearexcept(FE_ALL_EXCEPT) before calling these functions. On return, if fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) is non-zero, an exception has been raised. An application should either examine the return value or check the floating point exception flags to detect exceptions.

An application can also set errno to 0 before calling pow(). On return, if errno is non-zero, an error has occurred. The powf() and powl() functions do not set errno.

## ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

 ATTRIBUTE TYPE ATTRIBUTE VALUE Interface Stability Standard MT-Level MT-Safe

exp(3M), feclearexcept(3M), fetestexcept(3M), isnan(3M), math.h(3HEAD), matherr(3M), attributes(5), standards(5)

## NOTES

Prior to Solaris 2.6, there was a conflict between the pow() function in this library and the pow() function in the libmp library. This conflict was resolved by prepending mp_ to all functions in the libmp library. See mp(3MP) for more information.

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
ERRORS
USAGE
ATTRIBUTES