## 5.4. The math library, mathlib

Trigonometric functions in mathlib use range reduction to
bring large arguments within the range 0 to 2p. ARM provides two
different range reduction functions. One is accurate to one unit
in the last place for *any* input values, but
is larger and slower than the other. The other is reliable enough
for almost all purposes and is faster and smaller.

The fast and small range reducer is used by default. To select
the more accurate one, use either:

In addition to the functions defined by the ANSI C standard,
mathlib provides the following functions:

*Inverse hyperbolic
functions (acosh, asinh, atanh)*

*Cube root (cbrt)*

*Copy sign (copysign)*

*Error functions (erf, erfc)*

*One less than exp(*`x`

)
(expm1)

*Determine if a number is finite (finite)*

*Gamma function (gamma, gamma_r)*

*Hypotenuse function (hypot)*

*Return the exponent
of a number (ilogb)*

*Determine if a number is a NaN (isnan)*

*Bessel functions of the first kind
(j0, j1, jn)*

*The logarithm of the gamma function
(lgamma, lgamma_r)*

*Logarithm of one more
than x (log1p)*

*Return the exponent of a number (logb)*

*Return the next representable number
(nextafter)*

*IEEE 754 remainder function (remainder)*

*IEEE round-to-integer operation (rint)*

*Scale a number by a
power of two (scalb, scalbn)*

*Return the fraction part of a number
(significand)*

*Bessel functions of the second kind
(y0, y1, yn)*.