Namespaces
Variants
Views
Actions

MATH_ERRNO, MATH_ERREXCEPT, math_errhandling

From cppreference.com
 
 
 
Common mathematical functions
Functions
Basic operations
remainder(C++11)
remquo(C++11)
fma(C++11)
fmax(C++11)
fmin(C++11)
fdim(C++11)
nan
nanf
nanl
(C++11)
(C++11)
(C++11)
Exponential functions
exp
exp2(C++11)
expm1(C++11)
log
log10
log1p(C++11)
log2(C++11)
Power functions
sqrt
cbrt(C++11)
hypot(C++11)
pow
Trigonometric and hyperbolic functions
sinh
cosh
tanh
asinh(C++11)
acosh(C++11)
atanh(C++11)
Error and gamma functions
erf(C++11)
erfc(C++11)
lgamma(C++11)
tgamma(C++11)
Nearest integer floating point operations
ceil
floor
round
lround
llround
(C++11)
(C++11)
(C++11)
trunc(C++11)
nearbyint(C++11)
rint
lrint
llrint
(C++11)
(C++11)
(C++11)
Floating point manipulation functions
ldexp
scalbn
scalbln
(C++11)
(C++11)
ilogb(C++11)
logb(C++11)
frexp
modf
nextafter
nexttoward
(C++11)
(C++11)
copysign(C++11)
Classification/Comparison
fpclassify(C++11)
isfinite(C++11)
isinf(C++11)
isnan(C++11)
isnormal(C++11)
signbit(C++11)
isgreater(C++11)
isgreaterequal(C++11)
isless(C++11)
islessequal(C++11)
islessgreater(C++11)
isunordered(C++11)
Macro constants
HUGE_VALF
HUGE_VAL
HUGE_VALL
(C++11)

(C++11)
INFINITY(C++11)
NAN(C++11)
math_errhandling
MATH_ERRNO
MATH_ERREXCEPT
(C++11)
FP_NORMAL
FP_SUBNORMAL
FP_ZERO
FP_INFINITE
FP_NAN
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
 
Defined in header <cmath>
#define MATH_ERRNO        1
(since C++11)
#define MATH_ERREXCEPT    2
(since C++11)
#define math_errhandling  /*implementation defined*/
(since C++11)

The macro constant math_errhandling expands to an expression of type int that is either equal to MATH_ERRNO, or equal to MATH_ERREXCEPT, or equal to their bitwise OR (MATH_ERRNO | MATH_ERREXCEPT).

The value of math_errhandling indicates the type of error handling that is performed by the floating-point operators and functions:

Constant Explanation
MATH_ERREXCEPT indicates that floating-point exceptions are used: at least FE_DIVBYZERO, FE_INVALID, and FE_OVERFLOW are defined in <cfenv>.
MATH_ERRNO indicates that floating-point operations use the variable errno to report errors.


The following floating-point error conditions are recognized:

  1. Domain error (input argument is outside the range in which the operation is mathematically defined, e.g. std::sqrt(-1), std::log(-1), or std::acos(2)). If MATH_ERRNO bit is set, EDOM is assigned to errno. If MATH_ERREXCEPT bit is set, FE_INVALID is raised.
  2. Range error (the mathematical result cannot be represented as the object of specified type, e.g. std::atanh(-1), std::log(0.0), or std::lgamma(0.0)). If MATH_ERRNO bit is set, ERANGE is assigned to errno. If MATH_ERREXCEPT bit is set, FE_DIVBYZERO or FE_OVERFLOW is raised.
  3. Overflow (the mathematical result is finite, but too big to be represented without extreme roundoff error, e.g. functions such as std::exp with sufficiently large arguments). If MATH_ERRNO bit is set, ERANGE is assigned to errno. If MATH_ERREXCEPT bit is set, FE_OVERFLOW is raised.
  4. Underflow (the mathematical result is non-zero, but too small to be represented without extreme roundoff error, e.g. the result is subnormal, as in std::sin(subnormal) or for many other functions with subnormal arguments). If MATH_ERRNO bit is set, ERANGE may be assigned to errno. If MATH_ERREXCEPT bit is set, FE_UNDERFLOW may be raised.

[edit] Example

[edit] See also

floating-point exceptions
(macro constant) [edit]
macro which expands to POSIX-compatible thread-local error number variable
(macro variable) [edit]