xref: /freebsd/lib/msun/man/exp.3 (revision dc36d6f9bb1753f3808552f3afd30eda9a7b206a)
13a8617a8SJordan K. Hubbard.\" Copyright (c) 1985, 1991 Regents of the University of California.
23a8617a8SJordan K. Hubbard.\" All rights reserved.
33a8617a8SJordan K. Hubbard.\"
43a8617a8SJordan K. Hubbard.\" Redistribution and use in source and binary forms, with or without
53a8617a8SJordan K. Hubbard.\" modification, are permitted provided that the following conditions
63a8617a8SJordan K. Hubbard.\" are met:
73a8617a8SJordan K. Hubbard.\" 1. Redistributions of source code must retain the above copyright
83a8617a8SJordan K. Hubbard.\"    notice, this list of conditions and the following disclaimer.
93a8617a8SJordan K. Hubbard.\" 2. Redistributions in binary form must reproduce the above copyright
103a8617a8SJordan K. Hubbard.\"    notice, this list of conditions and the following disclaimer in the
113a8617a8SJordan K. Hubbard.\"    documentation and/or other materials provided with the distribution.
12fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors
133a8617a8SJordan K. Hubbard.\"    may be used to endorse or promote products derived from this software
143a8617a8SJordan K. Hubbard.\"    without specific prior written permission.
153a8617a8SJordan K. Hubbard.\"
163a8617a8SJordan K. Hubbard.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
173a8617a8SJordan K. Hubbard.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
183a8617a8SJordan K. Hubbard.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
193a8617a8SJordan K. Hubbard.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
203a8617a8SJordan K. Hubbard.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
213a8617a8SJordan K. Hubbard.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
223a8617a8SJordan K. Hubbard.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
233a8617a8SJordan K. Hubbard.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
243a8617a8SJordan K. Hubbard.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
253a8617a8SJordan K. Hubbard.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
263a8617a8SJordan K. Hubbard.\" SUCH DAMAGE.
273a8617a8SJordan K. Hubbard.\"
2853101323SWarner Losh.Dd April 1, 2020
293a8617a8SJordan K. Hubbard.Dt EXP 3
30a307d598SRuslan Ermilov.Os
313a8617a8SJordan K. Hubbard.Sh NAME
323a8617a8SJordan K. Hubbard.Nm exp ,
337a15a32aSJordan K. Hubbard.Nm expf ,
34b83ccea3SSteve Kargl.Nm expl ,
35b83ccea3SSteve Kargl.\" The sorting error is intentional.  exp, expf, and expl should be adjacent.
3690232fdfSDavid Schultz.Nm exp2 ,
3790232fdfSDavid Schultz.Nm exp2f ,
3855265516SDavid Schultz.Nm exp2l ,
393a8617a8SJordan K. Hubbard.Nm expm1 ,
407a15a32aSJordan K. Hubbard.Nm expm1f ,
413ffff4baSSteve Kargl.Nm expm1l ,
427a15a32aSJordan K. Hubbard.Nm pow ,
436922f800SEnji Cooper.Nm powf ,
446922f800SEnji Cooper.Nm powl
4555265516SDavid Schultz.Nd exponential and power functions
4664890443SBruce Evans.Sh LIBRARY
4764890443SBruce Evans.Lb libm
483a8617a8SJordan K. Hubbard.Sh SYNOPSIS
4932eef9aeSRuslan Ermilov.In math.h
503a8617a8SJordan K. Hubbard.Ft double
513a8617a8SJordan K. Hubbard.Fn exp "double x"
527a15a32aSJordan K. Hubbard.Ft float
537a15a32aSJordan K. Hubbard.Fn expf "float x"
54b83ccea3SSteve Kargl.Ft long double
55b83ccea3SSteve Kargl.Fn expl "long double x"
563a8617a8SJordan K. Hubbard.Ft double
5790232fdfSDavid Schultz.Fn exp2 "double x"
5890232fdfSDavid Schultz.Ft float
5990232fdfSDavid Schultz.Fn exp2f "float x"
6055265516SDavid Schultz.Ft long double
6155265516SDavid Schultz.Fn exp2l "long double x"
6290232fdfSDavid Schultz.Ft double
633a8617a8SJordan K. Hubbard.Fn expm1 "double x"
647a15a32aSJordan K. Hubbard.Ft float
657a15a32aSJordan K. Hubbard.Fn expm1f "float x"
663ffff4baSSteve Kargl.Ft long double
673ffff4baSSteve Kargl.Fn expm1l "long double x"
683a8617a8SJordan K. Hubbard.Ft double
693a8617a8SJordan K. Hubbard.Fn pow "double x" "double y"
707a15a32aSJordan K. Hubbard.Ft float
717a15a32aSJordan K. Hubbard.Fn powf "float x" "float y"
726922f800SEnji Cooper.Ft long double
736922f800SEnji Cooper.Fn powl "long double x" "long double y"
743a8617a8SJordan K. Hubbard.Sh DESCRIPTION
753a8617a8SJordan K. HubbardThe
76b83ccea3SSteve Kargl.Fn exp ,
77b83ccea3SSteve Kargl.Fn expf ,
78b83ccea3SSteve Kargland
79b83ccea3SSteve Kargl.Fn expl
8090232fdfSDavid Schultzfunctions compute the base
8190232fdfSDavid Schultz.Ms e
8290232fdfSDavid Schultzexponential value of the given argument
8390232fdfSDavid Schultz.Fa x .
8490232fdfSDavid Schultz.Pp
8590232fdfSDavid SchultzThe
8655265516SDavid Schultz.Fn exp2 ,
8755265516SDavid Schultz.Fn exp2f ,
8855265516SDavid Schultzand
8955265516SDavid Schultz.Fn exp2l
9090232fdfSDavid Schultzfunctions compute the base 2 exponential of the given argument
913a8617a8SJordan K. Hubbard.Fa x .
923a8617a8SJordan K. Hubbard.Pp
933a8617a8SJordan K. HubbardThe
943ffff4baSSteve Kargl.Fn expm1 ,
953ffff4baSSteve Kargl.Fn expm1f ,
967a15a32aSJordan K. Hubbardand the
973ffff4baSSteve Kargl.Fn expm1l
987a15a32aSJordan K. Hubbardfunctions compute the value exp(x)\-1 accurately even for tiny argument
993a8617a8SJordan K. Hubbard.Fa x .
1003a8617a8SJordan K. Hubbard.Pp
1013a8617a8SJordan K. HubbardThe
1026922f800SEnji Cooper.Fn pow ,
1036922f800SEnji Cooper.Fn powf ,
1047a15a32aSJordan K. Hubbardand the
1056922f800SEnji Cooper.Fn powl
1067a15a32aSJordan K. Hubbardfunctions compute the value
1073a8617a8SJordan K. Hubbardof
108*c5cbef2fSGordon Bergling.Fa x
1093a8617a8SJordan K. Hubbardto the exponent
110*c5cbef2fSGordon Bergling.Fa y .
1113a8617a8SJordan K. Hubbard.Sh ERROR (due to Roundoff etc.)
11290232fdfSDavid SchultzThe values of
11390232fdfSDavid Schultz.Fn exp 0 ,
11490232fdfSDavid Schultz.Fn expm1 0 ,
11590232fdfSDavid Schultz.Fn exp2 integer ,
11655b80e58SAlexey Zelkinand
1173a8617a8SJordan K. Hubbard.Fn pow integer integer
11890232fdfSDavid Schultzare exact provided that they are representable.
11990232fdfSDavid Schultz.\" XXX Is this really true for pow()?
12090232fdfSDavid SchultzOtherwise the error in these functions is generally below one
12190232fdfSDavid Schultz.Em ulp .
1223a8617a8SJordan K. Hubbard.Sh RETURN VALUES
1233a8617a8SJordan K. HubbardThese functions will return the appropriate computation unless an error
1243a8617a8SJordan K. Hubbardoccurs or an argument is out of range.
1253a8617a8SJordan K. HubbardThe functions
1266922f800SEnji Cooper.Fn pow x y ,
1276922f800SEnji Cooper.Fn powf x y ,
1288e264694SDavid Schultzand
1296922f800SEnji Cooper.Fn powl x y
1308e264694SDavid Schultzraise an invalid exception and return an \*(Na if
1313a8617a8SJordan K. Hubbard.Fa x
1323a8617a8SJordan K. Hubbard< 0 and
1333a8617a8SJordan K. Hubbard.Fa y
1348e264694SDavid Schultzis not an integer.
1353a8617a8SJordan K. Hubbard.Sh NOTES
1363a8617a8SJordan K. HubbardThe function
1373a8617a8SJordan K. Hubbard.Fn pow x 0
13890232fdfSDavid Schultzreturns x**0 = 1 for all x including x = 0, \*(If, and \*(Na .
139d0353b83SRuslan ErmilovPrevious implementations of pow may
1403a8617a8SJordan K. Hubbardhave defined x**0 to be undefined in some or all of these
1411a0a9345SRuslan Ermilovcases.
1421a0a9345SRuslan ErmilovHere are reasons for returning x**0 = 1 always:
1433a8617a8SJordan K. Hubbard.Bl -enum -width indent
1443a8617a8SJordan K. Hubbard.It
1453a8617a8SJordan K. HubbardAny program that already tests whether x is zero (or
1463a8617a8SJordan K. Hubbardinfinite or \*(Na) before computing x**0 cannot care
147c6ff3a1bSSheldon Hearnwhether 0**0 = 1 or not.
148c6ff3a1bSSheldon HearnAny program that depends
1493a8617a8SJordan K. Hubbardupon 0**0 to be invalid is dubious anyway since that
1503a8617a8SJordan K. Hubbardexpression's meaning and, if invalid, its consequences
1513a8617a8SJordan K. Hubbardvary from one computer system to another.
1523a8617a8SJordan K. Hubbard.It
1531a0a9345SRuslan ErmilovSome Algebra texts (e.g.\& Sigler's) define x**0 = 1 for
1543a8617a8SJordan K. Hubbardall x, including x = 0.
1553a8617a8SJordan K. HubbardThis is compatible with the convention that accepts a[0]
1563a8617a8SJordan K. Hubbardas the value of polynomial
1573a8617a8SJordan K. Hubbard.Bd -literal -offset indent
1583a8617a8SJordan K. Hubbardp(x) = a[0]\(**x**0 + a[1]\(**x**1 + a[2]\(**x**2 +...+ a[n]\(**x**n
1593a8617a8SJordan K. Hubbard.Ed
1603a8617a8SJordan K. Hubbard.Pp
1613a8617a8SJordan K. Hubbardat x = 0 rather than reject a[0]\(**0**0 as invalid.
1623a8617a8SJordan K. Hubbard.It
1633a8617a8SJordan K. HubbardAnalysts will accept 0**0 = 1 despite that x**y can
1643a8617a8SJordan K. Hubbardapproach anything or nothing as x and y approach 0
1653a8617a8SJordan K. Hubbardindependently.
1663a8617a8SJordan K. HubbardThe reason for setting 0**0 = 1 anyway is this:
16746eea498SRuslan Ermilov.Bd -ragged -offset indent
1683a8617a8SJordan K. HubbardIf x(z) and y(z) are
1693a8617a8SJordan K. Hubbard.Em any
1703a8617a8SJordan K. Hubbardfunctions analytic (expandable
1713a8617a8SJordan K. Hubbardin power series) in z around z = 0, and if there
1723a8617a8SJordan K. Hubbardx(0) = y(0) = 0, then x(z)**y(z) \(-> 1 as z \(-> 0.
1733a8617a8SJordan K. Hubbard.Ed
1743a8617a8SJordan K. Hubbard.It
1753a8617a8SJordan K. HubbardIf 0**0 = 1, then
1765391441cSRuslan Ermilov\*(If**0 = 1/0**0 = 1 too; and
1773a8617a8SJordan K. Hubbardthen \*(Na**0 = 1 too because x**0 = 1 for all finite
1783a8617a8SJordan K. Hubbardand infinite x, i.e., independently of x.
1793a8617a8SJordan K. Hubbard.El
1803a8617a8SJordan K. Hubbard.Sh SEE ALSO
181*c5cbef2fSGordon Bergling.Xr clog 3 ,
182*c5cbef2fSGordon Bergling.Xr cpow 3 ,
1838e264694SDavid Schultz.Xr fenv 3 ,
18455265516SDavid Schultz.Xr ldexp 3 ,
18555265516SDavid Schultz.Xr log 3 ,
1864bd9ba3cSMike Pritchard.Xr math 3
18755265516SDavid Schultz.Sh STANDARDS
18855265516SDavid SchultzThese functions conform to
18955265516SDavid Schultz.St -isoC-99 .
19053101323SWarner Losh.Sh HISTORY
19153101323SWarner LoshThe
19253101323SWarner Losh.Fn exp
19353101323SWarner Loshfunction appeared in
19453101323SWarner Losh.At v1 .
195