A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cplusplus.com/math_errhandling below:

macro

<cmath> <ctgmath>

math_errhandling

Error handling

Expands to an expression that identifies the error handling mechanism employed by the functions in the <cmath> header:

constant value description MATH_ERRNO 1 errno is used to signal errors:
- On domain error: errno is set to EDOM.
- On range error (including pole error, overflow, and possibly underflow): errno is set to ERANGE.
MATH_ERREXCEPT 2 The proper C exception is raised:
- On domain error: FE_INVALID is raised.
- On pole error: FE_DIVBYZERO is raised.
- On overflow: FE_OVERFLOW is raised.
- On underflow: FE_UNDERFLOW may be raised.
MATH_ERRNO|MATH_ERREXCEPT 3 Both of the above


Both MATH_ERRNO and MATH_ERREXCEPT are macro constant expressions defined in <cmath> as 1 and 2 respectivelly.

Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* math_errhandling example */
#include <stdio.h>      /* printf */
#include <math.h>       /* math_errhandling */
#include <errno.h>      /* errno, EDOM */
#include <fenv.h>       /* feclearexcept, fetestexcept, FE_ALL_EXCEPT, FE_INVALID */
#pragma STDC FENV_ACCESS on

int main () {
  errno = 0;
  if (math_errhandling & MATH_ERREXCEPT) feclearexcept(FE_ALL_EXCEPT);

  printf ("Error handling: %d",math_errhandling);

  sqrt (-1);
  if (math_errhandling & MATH_ERRNO) {
    if (errno==EDOM) printf("errno set to EDOM\n");
  }
  if (math_errhandling  &MATH_ERREXCEPT) {
    if (fetestexcept(FE_INVALID)) printf("FE_INVALID raised\n");
  }

  return 0;
}

Possible output:
Error handling: 3
errno set to EDOM
FE_INVALID raised


Data races Libraries that support multi-threading shall implement errno and/or floating-point exception state in a per-thread basis: With each thread having its own local errno and floating-point state.
This is a requirement for libraries compliant with C11 and C++11 standards.

errno
Last error number (macro)

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4