# FreeBSD Manual Pages

EXP(3) FreeBSD Library Functions Manual EXP(3)NAMEexp,expf,expl,exp2,exp2f,exp2l,expm1,expm1f,expm1l,pow,powf,powl-- exponential and power functionsLIBRARYMath 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);longdoublepowl(longdoublex,longdoubley);DESCRIPTIONTheexp(),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(),powf(), and thepowl() 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 VALUESThese functions will return the appropriate computation unless an error occurs or an argument is out of range. The functionspow(x,y),powf(x,y), andpowl(x,y) raise an invalid exception and return anNaNifx< 0 andyis not an integer.NOTESThe 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.BUGSTo conform with newer C/C++ standards, a stub implementation forpowlwas committed to the math library, wherepowlis mapped topow. Thus, the numerical accuracy is at most that of the 53-bit double precision imple- mentation.SEE ALSOfenv(3), ldexp(3), log(3), math(3)STANDARDSThese functions conform to ISO/IEC 9899:1999 (``ISO C99''). FreeBSD 11.2 December 8, 2017 FreeBSD 11.2

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | ERROR (due to Roundoff etc.) | RETURN VALUES | NOTES | BUGS | SEE ALSO | STANDARDS

Want to link to this manual page? Use this URL:

<https://www.freebsd.org/cgi/man.cgi?query=exp&sektion=3&manpath=FreeBSD+11.2-RELEASE>