.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
.\"     <mtk.manpages@gmail.com>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" References consulted:
.\"     Linux libc source code
.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\"     386BSD man pages
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2002-07-27 by Walter Harms
.\" 	(walter.harms@informatik.uni-oldenburg.de)
.\"
.TH ATANH 3  2010-09-11 "" "Linux Programmer's Manual"
.SH NAME
atanh, atanhf, atanhl \- inverse hyperbolic tangent function
.SH SYNOPSIS
.nf
.B #include <math.h>
.sp
.BI "double atanh(double " x );
.br
.BI "float atanhf(float " x );
.br
.BI "long double atanhl(long double " x );
.sp
.fi
Link with \fI\-lm\fP.
.sp
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
.sp
.ad l
.BR atanh ():
.RS 4
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
_POSIX_C_SOURCE\ >=\ 200112L;
.br
or
.I cc\ -std=c99
.RE
.br
.BR atanhf (),
.BR atanhl ():
.RS 4
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
_POSIX_C_SOURCE\ >=\ 200112L;
.br
or
.I cc\ -std=c99
.RE
.ad b
.SH DESCRIPTION
The
.BR atanh ()
function calculates the inverse hyperbolic tangent of
\fIx\fP; that is the value whose hyperbolic tangent is \fIx\fP.
.SH "RETURN VALUE"
On success, these functions return the inverse hyperbolic tangent of
.IR x .

If
.I x
is a NaN, a NaN is returned.

If
.I x
is +0 (\-0), +0 (\-0) is returned.

If
.I x
is +1 or \-1,
a pole error occurs,
and the functions return
.BR HUGE_VAL ,
.BR HUGE_VALF ,
or
.BR HUGE_VALL ,
respectively, with the mathematically correct sign.

If the absolute value of
.I x
is greater than 1,
a domain error occurs,
and a NaN is returned.
.\"
.\" POSIX.1-2001 documents an optional range error for subnormal x;
.\" glibc 2.8 does not do this.
.SH ERRORS
See
.BR math_error (7)
for information on how to determine whether an error has occurred
when calling these functions.
.PP
The following errors can occur:
.TP
Domain error: \fIx\fP less than \-1 or greater than +1
.I errno
is set to
.BR EDOM .
An invalid floating-point exception
.RB ( FE_INVALID )
is raised.
.TP
Pole error: \fIx\fP is +1 or \-1
.I errno
is set to
.BR ERANGE
(but see BUGS).
A divide-by-zero floating-point exception
.RB ( FE_DIVBYZERO )
is raised.
.SH "CONFORMING TO"
C99, POSIX.1-2001.
The variant returning
.I double
also conforms to
SVr4, 4.3BSD, C89.
.SH BUGS
In glibc 2.9 and earlier,
.\" Bug: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6759
.\" This can be seen in sysdeps/ieee754/k_standard.c
when a pole error occurs,
.I errno
as set to
.BR EDOM
instead of the POSIX-mandated
.BR ERANGE .
Since version 2.10, glibc does the right thing.
.SH "SEE ALSO"
.BR acosh (3),
.BR asinh (3),
.BR catanh (3),
.BR cosh (3),
.BR sinh (3),
.BR tanh (3)
