## NAME

log(), logf(), logl(), logw(), logq() — natural logarithm functions

## SYNOPSIS

`#include <math.h>`

`double log(double x);`

`float logf(float x);`

### HP Integrity Server Only

`long double logl(long double x);`

`extended logw(extended x);`

`quad logq(quad x);`

## DESCRIPTION

`log()`
returns the natural logarithm of
`x`.

`logf()`
is a
`float`
version of
`log()`;
it takes a
`float`
argument and returns a
`float`
result.

### Integrity Server Only

`logl()`
is a
`long` `double`
version of
`log()`;
it takes a
`long` `double`
argument and returns a
`long` `double`
result.

`logw()`
is an
`extended`
version of
`log()`;
it takes an
`extended`
argument and returns an
`extended`
result.

`logq()`
is equivalent to
`logl()`
on HP-UX systems.

## USAGE

To use these functions, compile either with the default
`-Ae`
option or with the
`-Aa`
and the
`-D_HPUX_SOURCE`
options.

To use (for Integrity servers)
`logw()`
or
`logq()`,
compile also with the
`-fpwidetypes`
option.

To use any of these functions, make sure your program includes
`<math.h>`,
and link in the math library by specifying
`-lm`
on the compiler or linker command line.

For more information, see the
*HP-UX floating-point guide for HP Integrity servers*
at the following site:
`http://www.hp.com/go/fp`.

### PA-RISC Only

Millicode versions of the
`log()`
and
`logf()`
functions are available.
Millicode versions of math library functions are usually
faster than their counterparts in the standard library.
To use these versions, compile your program with the
`+Olibcalls`
or the
`+Oaggressive`
optimization option.

For special cases, the millicode versions return the value described
in the RETURN VALUE section, but do not set
`errno`.

## RETURN VALUE

If
`x`
is +INFINITY,
`log()`
returns +INFINITY.

If
`x`
is zero,
`log()`
returns
`-HUGE_VAL`
(equal to -INFINITY)
and raises the divide-by-zero exception.

If
`x`
is less than zero,
`log()`
returns NaN and raises the invalid exception.

If
`x`
is NaN,
`log()`
returns NaN.

When it raises no other exception,
whether
`log()`
raises the
inexact exception is unspecified.

## ERRORS

If
`x`
is less than zero,
`log()`
sets
`errno`
to [EDOM].

### Integrity System Only

HP-UX
`libm`
functions on Integrity servers do not set
`errno`
by default. For
`errno`
setting, compile with the
`+Olibmerrno`
option.

## STANDARDS CONFORMANCE

`log()`
: SVID3, XPG4.2, ANSI C, ISO/IEC C99
(including Annex F, ``IEC 60559 floating-point arithmetic'')

`logf()`,
`logl()`
: ISO/IEC C99 (including Annex F, ``IEC 60559 floating-point arithmetic'')