| 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 donations bookstore | delorie software privacy |
| Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |