.\" Copyright (c) 1985 Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"	from: @(#)math.3	6.10 (Berkeley) 5/6/91
.\" $FreeBSD: src/lib/msun/man/math.3,v 1.27 2005/11/17 13:00:00 ru Exp $
.\"
.Dd November 6, 2005
.Dt MATH 3
.Os
.if n \{\
.char \[sr] "sqrt
.\}
.Sh NAME
.Nm math
.Nd "floating-point mathematical library"
.Sh LIBRARY
.Lb libm
.Sh SYNOPSIS
.In math.h
.Sh DESCRIPTION
These functions constitute the C math library.
.Sh "LIST OF FUNCTIONS"
Each of the following
.Vt double
functions has a
.Vt float
counterpart with an
.Ql f
appended to the name and a
.Vt "long double"
counterpart with an
.Ql l
appended.
As an example, the
.Vt float
and
.Vt "long double"
counterparts of
.Ft double
.Fn acos "double x"
are
.Ft float
.Fn acosf "float x"
and
.Ft "long double"
.Fn acosl "long double x" ,
respectively.
.de Cl
.Bl -column "isgreaterequal" "bessel function of the second kind of the order 0"
.Em "Name	Description"
..
.Ss Algebraic Functions
.Cl
cbrt	cube root
fma	fused multiply-add
hypot	Euclidean distance
sqrt	square root
.El
.Ss Classification Functions
.Cl
fpclassify	classify a floating-point value
isfinite	determine whether a value is finite
isinf	determine whether a value is infinite
isnan	determine whether a value is \*(Na
isnormal	determine whether a value is normalized
.El
.Ss Exponent Manipulation Functions
.Cl
frexp	extract exponent and mantissa
ilogb	extract exponent
ldexp	multiply by power of 2
logb	extract exponent
scalbln	adjust exponent
scalbn	adjust exponent
.El
.Ss Extremum- and Sign-Related Functions
.Cl
copysign	copy sign bit
fabs	absolute value
fdim	positive difference
fmax	maximum function
fmin	minimum function
signbit	extract sign bit
.El
.\" .Ss Not a Number
.\" .Cl
.\" nan	return quiet \*(Na)	0
.\" .El
.Ss Residue and Rounding Functions
.Cl
ceil	integer no less than
floor	integer no greater than
fmod	positive remainder
llrint	round to integer in fixed-point format
llround	round to nearest integer in fixed-point format
lrint	round to integer in fixed-point format
lround	round to nearest integer in fixed-point format
modf	extract integer and fractional parts
nearbyint	round to integer (silent)
nextafter	next representable value
nexttoward	next representable value
remainder	remainder
remquo	remainder with partial quotient
rint	round to integer
round	round to nearest integer
trunc	integer no greater in magnitude than
.El
.Pp
The
.Fn ceil ,
.Fn floor ,
.Fn llround ,
.Fn lround ,
.Fn round ,
and
.Fn trunc
functions round in predetermined directions, whereas
.Fn llrint ,
.Fn lrint ,
and
.Fn rint
round according to the current (dynamic) rounding mode.
For more information on controlling the dynamic rounding mode, see
.Xr fenv 3
and
.Xr fesetround 3 .
.Ss Silent Order Predicates
.Cl
isgreater	greater than relation
isgreaterequal	greater than or equal to relation
isless	less than relation
islessequal	less than or equal to relation
islessgreater	less than or greater than relation
isunordered	unordered relation
.El
.Ss Transcendental Functions
.Cl
acos	inverse cosine
acosh	inverse hyperbolic cosine
asin	inverse sine
asinh	inverse hyperbolic sine
atan	inverse tangent
atanh	inverse hyperbolic tangent
atan2	atan(y/x); complex argument
cos	cosine
cosh	hyperbolic cosine
erf	error function
erfc	complementary error function
exp	exponential base e
exp2	exponential base 2
expm1	exp(x)\-1
j0	Bessel function of the first kind of the order 0
j1	Bessel function of the first kind of the order 1
jn	Bessel function of the first kind of the order n
lgamma	log gamma function
log	natural logarithm
log10	logarithm to base 10
log1p	log(1+x)
.\" log2	base 2 logarithm
pow	exponential x**y
sin	trigonometric function
sinh	hyperbolic function
tan	trigonometric function
tanh	hyperbolic function
tgamma	gamma function
y0	Bessel function of the second kind of the order 0
y1	Bessel function of the second kind of the order 1
yn	Bessel function of the second kind of the order n
.El
.Pp
Unlike the algebraic functions listed earlier, the routines
in this section may not produce a result that is correctly rounded,
so reproducible results cannot be guaranteed across platforms.
For most of these functions, however, incorrect rounding occurs
rarely, and then only in very-close-to-halfway cases.
.Sh SEE ALSO
.Xr fenv 3 ,
.Xr ieee 3
.Sh HISTORY
A math library with many of the present functions appeared in
.At v7 .
The library was substantially rewritten for
.Bx 4.3
to provide
better accuracy and speed on machines supporting either VAX
or IEEE 754 floating-point.
Most of this library was replaced with FDLIBM, developed at Sun
Microsystems, in
.Fx 1.1.5 .
Additional routines, including ones for
.Vt float
and
.Vt long double
values, were written for or imported into subsequent versions of FreeBSD.
.Sh BUGS
The
.Fn log2
and
.Fn nan
functions are missing, and many functions are not available in their
.Vt "long double"
variants.
.Pp
Many of the routines to compute transcendental functions produce
inaccurate results in other than the default rounding mode.
.Pp
On some architectures, trigonometric argument reduction is not
performed accurately, resulting in errors greater than 1
.Em ulp
for large arguments to
.Fn cos ,
.Fn sin ,
and
.Fn tan .
