public final class StrictMath

The class ` StrictMath`

contains methods for performing basic
numeric operations such as the elementary exponential, logarithm,
square root, and trigonometric functions.

To help ensure portability of Java programs, the definitions of
some of the numeric functions in this package require that they
produce the same results as certain published algorithms. These
algorithms are available from the well-known network library
` netlib`

as the package "Freely Distributable Math
Library," ` fdlibm`

. These
algorithms, which are written in the C programming language, are
then to be understood as executed with all floating-point
operations following the rules of Java floating-point arithmetic.

The Java math library is defined with respect to
` fdlibm`

version 5.3. Where ` fdlibm`

provides
more than one definition for a function (such as
` acos`

), use the "IEEE 754 core function" version
(residing in a file whose name begins with the letter
` e`

). The methods which require ` fdlibm`

semantics are ` sin`

, ` cos`

, ` tan`

,
` asin`

, ` acos`

, ` atan`

,
` exp`

, ` log`

, ` log10`

,
` cbrt`

, ` atan2`

, ` pow`

,
` sinh`

, ` cosh`

, ` tanh`

,
` hypot`

, ` expm1`

, and ` log1p`

.

The platform uses signed two's complement integer arithmetic with
int and long primitive types. The developer should choose
the primitive type to ensure that arithmetic operations consistently
produce correct results, which in some cases means the operations
will not overflow the range of values of the computation.
The best practice is to choose the primitive type and algorithm to avoid
overflow. In cases where the size is ` int`

or ` long`

and
overflow errors need to be detected, the methods ` addExact`

,
` subtractExact`

, ` multiplyExact`

, and ` toIntExact`

throw an ` ArithmeticException`

when the results overflow.
For other arithmetic operations such as divide, absolute value,
increment by one, decrement by one, and negation overflow occurs only with
a specific minimum or maximum value and should be checked against
the minimum or maximum as appropriate.