summaryrefslogtreecommitdiffstats
path: root/man3/expm1.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/expm1.3')
-rw-r--r--man3/expm1.3166
1 files changed, 166 insertions, 0 deletions
diff --git a/man3/expm1.3 b/man3/expm1.3
new file mode 100644
index 0000000..dd99ac1
--- /dev/null
+++ b/man3/expm1.3
@@ -0,0 +1,166 @@
+'\" t
+.\" Copyright 1995 Jim Van Zandt <jrv@vanzandt.mv.com>
+.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\" Modified 2002-07-27 Walter Harms
+.\" (walter.harms@informatik.uni-oldenburg.de)
+.\"
+.TH expm1 3 2023-07-20 "Linux man-pages 6.05.01"
+.SH NAME
+expm1, expm1f, expm1l \- exponential minus 1
+.SH LIBRARY
+Math library
+.RI ( libm ", " \-lm )
+.SH SYNOPSIS
+.nf
+.B #include <math.h>
+.PP
+.BI "double expm1(double " x );
+.BI "float expm1f(float " x );
+.BI "long double expm1l(long double " x );
+.PP
+.fi
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.PP
+.BR expm1 ():
+.nf
+ _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
+ || _XOPEN_SOURCE >= 500
+.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
+ || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+.fi
+.PP
+.BR expm1f (),
+.BR expm1l ():
+.nf
+ _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
+ || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
+.fi
+.SH DESCRIPTION
+These functions return a value equivalent to
+.PP
+.nf
+ exp(x) \- 1
+.fi
+.PP
+The result is computed in a way that is accurate even if the value of
+.I x
+is near
+zero\[em]a case where
+.I "exp(x) \- 1"
+would be inaccurate due to
+subtraction of two numbers that are nearly equal.
+.SH RETURN VALUE
+On success, these functions return
+.IR "exp(x)\ \-\ 1" .
+.PP
+If
+.I x
+is a NaN,
+a NaN is returned.
+.PP
+If
+.I x
+is +0 (\-0),
++0 (\-0) is returned.
+.PP
+If
+.I x
+is positive infinity, positive infinity is returned.
+.PP
+If
+.I x
+is negative infinity, \-1 is returned.
+.PP
+If the result overflows, a range error occurs,
+and the functions return
+.RB \- HUGE_VAL ,
+.RB \- HUGE_VALF ,
+or
+.RB \- HUGE_VALL ,
+respectively.
+.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
+Range error, overflow
+.I errno
+is set to
+.B ERANGE
+(but see BUGS).
+An overflow floating-point exception
+.RB ( FE_OVERFLOW )
+is raised.
+.\"
+.\" POSIX.1 specifies an optional range error (underflow) if
+.\" x is subnormal. glibc does not implement this.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR expm1 (),
+.BR expm1f (),
+.BR expm1l ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.SH STANDARDS
+C11, POSIX.1-2008.
+.SH HISTORY
+C99, POSIX.1-2001.
+BSD.
+.SH BUGS
+Before glibc 2.17,
+.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6778
+on certain architectures (e.g., x86, but not x86_64)
+.BR expm1 ()
+raised a bogus underflow floating-point exception
+for some large negative
+.I x
+values (where the function result approaches \-1).
+.PP
+Before approximately glibc 2.11,
+.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6814
+.\" e.g., expm1(1e5) through expm1(1.00199970127e5),
+.\" but not expm1(1.00199970128e5) and beyond.
+.BR expm1 ()
+raised a bogus invalid floating-point exception in addition to the expected
+overflow exception, and returned a NaN instead of positive infinity,
+for some large positive
+.I x
+values.
+.PP
+Before glibc 2.11,
+.\" It looks like the fix was in glibc 2.11, or possibly glibc 2.12.
+.\" I have no test system for glibc 2.11, but glibc 2.12 passes.
+.\" From the source (sysdeps/i386/fpu/s_expm1.S) it looks
+.\" like the changes were in glibc 2.11.
+the glibc implementation did not set
+.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6788
+.I errno
+to
+.B ERANGE
+when a range error occurred.
+.SH SEE ALSO
+.BR exp (3),
+.BR log (3),
+.BR log1p (3)