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