/**	@file	dk3ma.h	Mathematical operations.

This module contains functions to perform arithmetic operations on
long/unsigned long, long long/unsigned long long and intmax_t/uintmax_t
operands and on dk3_im_t/dk3_um_t operands.

When using plain operators +, -, *, / on integer operands, range
overflow can occur silently. A division by 0 is a terminal error
(program abort) on most systems.

The functions in this module can be used to avoid division by zero and
to detect overflows. An error code variable is set on errors.

For double operands,
don't use the dk3ma_d_add_ok(), dk3ma_d_sub_ok(),
dk3ma_d_mul_ok() or dk3ma_d_div_ok() functions in new programs.
They are still in the module for backward compatibility.

The definition of the double type contains special values to express
inifinity or not-a-number. A division by zero for double values does
not terminate the program, it simply results in one of the special values.
So you can do double arithmetic straightforward, finally use the
isfinite() function to check whether the result is a valid number.
On modern system you can use the floating point environment functions
from fenv.h to obtain more detailed error information.

The module also contains conversion routines between the
numeric types.

*/

