The ALOG function returns the natural logarithm of *X*.

For input of a complex number, Z = X + *i*Y, the complex number can be rewritten as Z = R exp(*i*θ), where R = abs(Z) and θ = atan(y,x). The complex natural log is then given by,

alog(Z) = alog(R) + *i*θ

In the above formula, the use of the two-argument arctangent separates the solutions at Y = 0 and takes into account the branch-cut discontinuity along the real axis from -∞ to 0, and ensures that exp(alog(Z)) is equal to Z ^{1}. For details see formulas 4.4.1-3 in Abramowitz, M. and Stegun, I.A., 1964: *Handbook of Mathematical Functions* (Washington: National Bureau of Standards).

## Examples

### Example 1

Find the natural logarithm of 2 and print the result by entering:

PRINT, ALOG(2)

IDL prints:

0.693147

### Example 2

Find the complex natural log of sqrt(2) + i sqrt(2) and print the result by entering:

PRINT, ALOG(COMPLEX(sqrt(2), sqrt(2)))

IDL prints:

( 0.693147, 0.785398)

**Note: **The real part of the result is just ALOG(2) and the imaginary part gives the angle (in radians) of the complex number relative to the real axis.

See the ATAN function for an example of visualizing the complex natural log.

### Example 3

Find the decay rate of tritium given its half-life (t_{1/2}) of 12.32 years and the decay rate = -(ln(2))/t_{1/2} :

PRINT, -(ALOG(2))/12.32

IDL prints:

`-0.0562619`

## Syntax

*Result* = ALOG(*X*)

## Return Value

Returns the natural logarithm of *X*.

## Arguments

### X

The value for which the natural log is desired. For real input, X should be greater than or equal to zero. If X is double-precision floating or complex, the result is of the same type. All other types are converted to single-precision floating-point and yield floating-point results. If X is an array, the result has the same dimensions, with each element containing the natural log of the corresponding element of X.

## Keywords

### Thread Pool Keywords

This routine is written to make use of IDL’s *thread pool*, which can increase execution speed on systems with multiple CPUs. The values stored in the !CPU system variable control whether IDL uses the thread pool for a given computation. In addition, you can use the thread pool keywords TPOOL_MAX_ELTS, TPOOL_MIN_ELTS, and TPOOL_NOTHREAD to override the defaults established by !CPU for a single invocation of this routine. See Thread Pool Keywords for details.

## Version History

Original |
Introduced |