EXP
Section: C Library Functions (3)
Index
Return to Main Contents
BSD mandoc
BSD 4
NAME
exp
expm1
log
log10
log1p
pow
- exponential, logarithm, power functions
SYNOPSIS
Fd #include <math.h>
Ft double
Fn exp double x
Ft double
Fn expm1 double x
Ft double
Fn log double x
Ft double
Fn log10 double x
Ft double
Fn log1p double x
Ft double
Fn pow double x double y
DESCRIPTION
The
Fn exp
function computes the exponential value of the given argument
Fa x .
The
Fn expm1
function computes the value exp(x)-1 accurately even for tiny argument
Fa x .
The
Fn log
function computes the value for the natural logarithm of
the argument x.
The
Fn log10
function computes the value for the logarithm of
argument
Fa x
to base 10.
The
Fn log1p
function computes
the value of log(1+x) accurately even for tiny argument
Fa x .
The
Fn pow
computes the value
of
x
to the exponent
y
ERROR (due to Roundoff etc.)
exp(x), log(x), expm1(x) and log1p(x) are accurate to within
an
up
and log10(x) to within about 2
ups
an
up
is one
Unit
in the
Last
Place
The error in
Fn pow x y
is below about 2
ups
when its
magnitude is moderate, but increases as
Fn pow x y
approaches
the over/underflow thresholds until almost as many bits could be
lost as are occupied by the floating-point format's exponent
field; that is 8 bits for
VAX D
and 11 bits for IEEE 754 Double.
No such drastic loss has been exposed by testing; the worst
errors observed have been below 20
ups
for
VAX D
300
ups
for
IEEE
754 Double.
Moderate values of
Fn pow
are accurate enough that
Fn pow integer integer
is exact until it is bigger than 2**56 on a
VAX
2**53 for
IEEE
754.
RETURN VALUES
These functions will return the approprate computation unless an error
occurs or an argument is out of range.
The functions
Fn exp ,
Fn expm1
and
Fn pow
detect if the computed value will overflow,
set the global variable
errno to
Er RANGE
and cause a reserved operand fault on a
VAX
or
Tahoe
The function
Fn pow x y
checks to see if
Fa x
< 0 and
Fa y
is not an integer, in the event this is true,
the global variable
errno
is set to
Er EDOM
and on the
VAX
and
Tahoe
generate a reserved operand fault.
On a
VAX
and
Tahoe
errno
is set to
Er EDOM
and the reserved operand is returned
by log unless
Fa x
> 0, by
Fn log1p
unless
Fa x
> -1.
NOTES
The functions exp(x)-1 and log(1+x) are called
expm1 and logp1 in
BASIC
on the Hewlett-Packard
HP -71B
and
APPLE
Macintosh,
EXP1
and
LN1
in Pascal, exp1 and log1 in C
on
APPLE
Macintoshes, where they have been provided to make
sure financial calculations of ((1+x)**n-1)/x, namely
expm1(n*log1p(x))/x, will be accurate when x is tiny.
They also provide accurate inverse hyperbolic functions.
The function
Fn pow x 0
returns x**0 = 1 for all x including x = 0,
Infinity
(not found on a
VAX )
and
NaN
(the reserved
operand on a
VAX ) . Previous implementations of pow may
have defined x**0 to be undefined in some or all of these
cases. Here are reasons for returning x**0 = 1 always:
-
Any program that already tests whether x is zero (or
infinite or ) before computing x**0 cannot care
whether 0**0 = 1 or not. Any program that depends
upon 0**0 to be invalid is dubious anyway since that
expression's meaning and, if invalid, its consequences
vary from one computer system to another.
-
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.
-
Analysts will accept 0**0 = 1 despite that x**y can
approach anything 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) are
any
functions 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.
-
If 0**0 = 1, then
infinity**0 = 1/0**0 = 1 too; and
then **0 = 1 too because x**0 = 1 for all finite
and infinite x, i.e., independently of x.
SEE ALSO
math(3),
infnan(3)
HISTORY
A
Fn exp ,
Fn log
and
Fn pow
function
appeared in
AT&T System
v6 .
A
Fn log10
function
appeared in
AT&T System
v7 .
The
Fn log1p
and
Fn expm1
functions appeared in
BSD 4.3
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- ERROR (due to Roundoff etc.)
-
- RETURN VALUES
-
- NOTES
-
- SEE ALSO
-
- HISTORY
-
This document was created by
man2html,
using the manual pages.
Time: 00:35:29 GMT, March 30, 2022