POW(3)

NAME
pow - power function

SYNOPSIS
#include <math.h>
double
pow(double x, double y);
long double
powl(long double x, long double y);
float
powf(float x, float y);

DESCRIPTION
The pow() functions compute x raised to the power y.

SPECIAL VALUES
pow(±0, y) returns ±infinity and raises the "divide-by-zero" floating-point exception for y an odd integer < 0.

pow(±0, y) returns +infinity and raises the "divide-by-zero" floating-point exception for y < 0 and not an odd integer.

pow(±0, y) returns ±0 for y an odd integer > 0.

pow(±0, y) returns +0 for y > 0 and not an odd integer.

pow(-1, ±infinity) returns 1.

pow(1, y) returns 1 for any y, even a NaN.

pow(x, ±0) returns 1 for any x, even a NaN.

pow(x, y) returns a NaN and raises the "invalid" floating-point exception for finite x < 0 and finite non-integer y.

pow(x, -infinity) returns +infinity for |x| < 1.

pow(x, -infinity) returns +0 for |x| > 1.

pow(x, +infinity) returns +0 for |x| < 1.

pow(x, +infinity) returns +infinity for |x| > 1.

pow(-infinity, y) returns -0 for y an odd integer < 0.

pow(-infinity, y) returns +0 for y < 0 and not an odd integer.

pow(-infinity, y) returns -infinity for y an odd integer > 0.

pow(-infinity, y) returns +infinity for y > 0 and not an odd integer.

pow(+infinity, y) returns +0 for y < 0.

pow(+infinity, y) returns +infinity for y > 0.

A domain error occurs if x is finite and negative and y is finite and not an integer.

A domain error can occur if x is 0 and y less than or equal to 0.

Range errors may occur.

VECTOR OPERATIONS
If you need to apply the pow() functions to SIMD vectors or arrays, using the following functions provided by the Accelerate.framework may give significantly better performance:

#include <Accelerate/Accelerate.h>

vFloat vpowf(vFloat x, vFloat y);
vFloat vpowf(vFloat x, vSInt32 y);
void vvpowf(float *z, const float *y, const float *x, const int *n);
void vvpow(double *z, const double *y, const double *x, const int *n);
void vvpowsf(float *z, const float *y, const float *x, const int *n);
void vvpows(double *z, const double *y, const double *x, const int *n);

SEE ALSO
exp(3) math(3)

STANDARDS
The pow() function conforms to ISO/IEC 9899:2011.