ATANH(3M) | Mathematical Library Functions | ATANH(3M) |

atanh, atanhf, atanhl - inverse hyperbolic tangent functions

c99 [flag... ]file...-lm[library... ] #include <math.h>doubleatanh(doublex);

floatatanhf(floatx);

long doubleatanhl(long doublex);

These functions compute the inverse hyperbolic tangent of their
argument *x*.

Upon successful completion, these functions return the inverse hyperbolic tangent of their argument.

If *x* is ±1, a pole error occurs and **atanh()**,
**atanhf()**, and **atanhl()** return the value of the macro
**HUGE_VAL**, **HUGE_VALF**, and **HUGE_VALL**, respectively, with
the same sign as the correct value of the function.

For finite |*x*| > 1, a domain error occurs and a NaN is
returned.

If *x* is NaN, NaN is returned.

If *x* is +0, *x* is returned.

If *x* is +Inf, a domain error occurs and a NaN is
returned.

For exceptional cases, matherr(3M) tabulates the values to
be returned by **atanh()** as specified by SVID3 and XPG3.

These functions will fail if:

**Domain Error**

The *x* argument is finite and not in the range
[-1,1], or is ±Inf.

If the integer expression (**math_errhandling** &
**MATH_ERREXCEPT**) is non-zero, the invalid floating-point exception is
raised.

The **atanh()** function sets **errno** to **EDOM** if
the absolute value of *x* is greater than 1.0.

**Pole Error**

The *x* argument is ±1.

If the integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, then the divide-by-zero floating-point exception is raised.

The **atanh()** function sets **errno** to **ERANGE** if
the absolute value of *x* is equal to 1.0.

An application wanting to check for exceptions should call
**feclearexcept**(**FE_ALL_EXCEPT**) before calling these functions.
On return, if **fetestexcept**(**FE_INVALID** | **FE_DIVBYZERO** |
**FE_OVERFLOW** | **FE_UNDERFLOW**) is non-zero, an exception has been
raised. An application should either examine the return value or check the
floating point exception flags to detect exceptions.

An application can also set **errno** to 0 before calling
**atanh()**. On return, if **errno** is non-zero, an error has
occurred. The **atanhf()** and **atanhl()** functions do not set
**errno**.

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE | ATTRIBUTE VALUE |

Interface Stability | Standard |

MT-Level | MT-Safe |

math.h(3HEAD), feclearexcept(3M), fetestexcept(3M), matherr(3M), tanh(3M), attributes(7), standards(7)

July 12, 2006 | SunOS 5.11 |