www.delorie.com/gnu/docs/glibc/libc_391.html | search |
Buy the book! | |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
e
(the base of natural logarithms) raised
to the power x.
If the magnitude of the result is too large to be representable,
exp
signals overflow.
2
raised to the power x.
Mathematically, exp2 (x)
is the same as exp (x * log (2))
.
10
raised to the power x.
Mathematically, exp10 (x)
is the same as exp (x * log (10))
.
These functions are GNU extensions. The name exp10
is
preferred, since it is analogous to exp
and exp2
.
exp (log
(x))
equals x, exactly in mathematics and approximately in
C.
If x is negative, log
signals a domain error. If x
is zero, it returns negative infinity; if x is too close to zero,
it may signal overflow.
log10 (x)
equals log (x) / log (10)
.
log2 (x)
equals log (x) / log (2)
.
FLT_RADIX
is two, logb
is equal
to floor (log2 (x))
, except it's probably faster.
If x is de-normalized, logb
returns the exponent x
would have if it were normalized. If x is infinity (positive or
negative), logb
returns &infin;. If x is zero,
logb
returns &infin;. It does not signal.
logb
functions except that they return signed integer values.
Since integers cannot represent infinity and NaN, ilogb
instead
returns an integer that can't be the exponent of a normal floating-point
number. `math.h' defines constants so you can check for this.
ilogb
returns this value if its argument is 0
. The
numeric value is either INT_MIN
or -INT_MAX
.
This macro is defined in ISO C99.
ilogb
returns this value if its argument is NaN
. The
numeric value is either INT_MIN
or INT_MAX
.
This macro is defined in ISO C99.
These values are system specific. They might even be the same. The
proper way to test the result of ilogb
is as follows:
i = ilogb (f); if (i == FP_ILOGB0 || i == FP_ILOGBNAN) { if (isnan (f)) { /* Handle NaN. */ } else if (f == 0.0) { /* Handle 0.0. */ } else { /* Some other value with large exponent, perhaps +Inf. */ } } |
Mathematically, pow
would return a complex number when base
is negative and power is not an integral value. pow
can't
do that, so instead it signals a domain error. pow
may also
underflow or overflow the destination type.
If x is negative, sqrt
signals a domain error.
Mathematically, it should return a complex number.
sqrt (x*x +
y*y)
. This is the length of the hypotenuse of a right
triangle with sides of length x and y, or the distance
of the point (x, y) from the origin. Using this function
instead of the direct formula is wise, since the error is
much smaller. See also the function cabs
in 20.8.1 Absolute Value.
exp (x) - 1
.
They are computed in a way that is accurate even if x is
near zero--a case where exp (x) - 1
would be inaccurate owing
to subtraction of two numbers that are nearly equal.
log (1 + x)
.
They are computed in a way that is accurate even if x is
near zero.
ISO C99 defines complex variants of some of the exponentiation and logarithm functions.
e
(the base of natural
logarithms) raised to the power of z.
Mathematically, this corresponds to the value
exp (z) = exp (creal (z)) * (cos (cimag (z)) + I * sin (cimag (z)))
log (z) = log (cabs (z)) + I * carg (z)
clog
has a pole at 0, and will signal overflow if z equals
or is very close to 0. It is well-defined for all other values of
z.
log (z) = log10 (cabs (z)) + I * carg (z)
These functions are GNU extensions.
cexp (y * clog (x))
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
webmaster | delorie software privacy |
Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |