EXP(3) DragonFly Library Functions Manual EXP(3)## NAME

exp,expf,expl,exp2,exp2f,exp2l,expm1,expm1f,expm1l,pow,powf-- exponential and power functions## LIBRARY

Math Library (libm, -lm)## SYNOPSIS

#include<math.h>doubleexp(doublex);floatexpf(floatx);longdoubleexpl(longdoublex);doubleexp2(doublex);floatexp2f(floatx);longdoubleexp2l(longdoublex);doubleexpm1(doublex);floatexpm1f(floatx);longdoubleexpm1l(longdoublex);doublepow(doublex,doubley);floatpowf(floatx,floaty);## DESCRIPTION

Theexp(),expf(), andexpl() functions compute the baseeexponential value of the given argumentx. Theexp2(),exp2f(), andexp2l() functions compute the base 2 exponential of the given argumentx. Theexpm1(),expm1f(), and theexpm1l() functions compute the value exp(x)-1 accurately even for tiny argumentx. Thepow() and thepowf() functions compute the value ofxto the exponenty. ERROR (due to Roundoff etc.) The values ofexp(0),expm1(0),exp2(integer), andpow(integer,integer) are exact provided that they are representable. Otherwise the error in these functions is generally below oneulp.## RETURN VALUES

These functions will return the appropriate computation unless an error occurs or an argument is out of range. The functionspow(x,y) andpowf(x,y) raise an invalid exception and return anNaNifx< 0 andyis not an integer.## NOTES

The functionpow(x,0) returns x**0 = 1 for all x including x = 0, infin- ity, andNaN. Previous implementations of pow may have defined x**0 to be undefined in some or all of these cases. Here are reasons for return- ing x**0 = 1 always: 1. Any program that already tests whether x is zero (or infinite orNaN) before computing x**0 cannot care whether 0**0 = 1 or not. Any program that depends upon 0**0 to be invalid is dubious any- way since that expression's meaning and, if invalid, its conse- quences vary from one computer system to another. 2. Some Algebra texts (e.g. Sigler's) define x**0 = 1 for all x, including x = 0. This is compatible with the convention that accepts a[0] as the value of polynomial p(x) = a[0]*x**0 + a[1]*x**1 + a[2]*x**2 +...+ a[n]*x**n at x = 0 rather than reject a[0]*0**0 as invalid. 3. Analysts will accept 0**0 = 1 despite that x**y can approach any- thing or nothing as x and y approach 0 independently. The reason for setting 0**0 = 1 anyway is this: If x(z) and y(z) areanyfunctions analytic (expandable in power series) in z around z = 0, and if there x(0) = y(0) = 0, then x(z)**y(z) -> 1 as z -> 0. 4. If 0**0 = 1, then infinity**0 = 1/0**0 = 1 too; and thenNaN**0 = 1 too because x**0 = 1 for all finite and infinite x, i.e., inde- pendently of x.## SEE ALSO

fenv(3), ldexp(3), log(3), math(3)## STANDARDS

These functions conform to ISO/IEC 9899:1999 (``ISO C99''). DragonFly 3.9 June 11, 2013 DragonFly 3.9