Provided by:

manpages-dev_3.21-1_all **NAME**

log, logf, logl - natural logarithmic function

**SYNOPSIS**

**#include** **<math.h>**
**double** **log(double** __x__**);**
**float** **logf(float** __x__**);**
**long** **double** **logl(long** **double** __x__**);**
Link with __-lm__.
Feature Test Macro Requirements for glibc (see **feature_test_macros**(7)):
**logf**(), **logl**(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 ||
_ISOC99_SOURCE; or __cc__ __-std=c99__

**DESCRIPTION**

The **log**() function returns the natural logarithm of __x__.

**RETURN** **VALUE**

On success, these functions return the natural logarithm of __x__.
If __x__ is a NaN, a NaN is returned.
If __x__ is 1, the result is +0.
If __x__ is positive infinity, positive infinity is returned.
If __x__ is zero, then a pole error occurs, and the functions return
-**HUGE_VAL**, -**HUGE_VALF**, or -**HUGE_VALL**, respectively.
If __x__ is negative (including negative infinity), then a domain error
occurs, and a NaN (not a number) is returned.

**ERRORS**

See **math_error**(7) for information on how to determine whether an error
has occurred when calling these functions.
The following errors can occur:
Domain error: __x__ is negative
__errno__ is set to **EDOM**. An invalid floating-point exception
(**FE_INVALID**) is raised.
Pole error: __x__ is zero
__errno__ is set to **ERANGE**. A divide-by-zero floating-point
exception (**FE_DIVBYZERO**) is raised.

**CONFORMING** **TO**

C99, POSIX.1-2001. The variant returning __double__ also conforms to SVr4,
4.3BSD, C89.

**BUGS**

In glibc 2.5 and earlier, taking the **log**() of a NaN produces a bogus
invalid floating-point (**FE_INVALID**) exception.

**SEE** **ALSO**

**cbrt**(3), **clog**(3), **log1p**(3), **sqrt**(3)

**COLOPHON**

This page is part of release 3.21 of the Linux __man-pages__ project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
2008-08-10 LOG(3)