FloatingPointExceptions class
Manage floating-point exceptions via signal handlers at runtime.
This class allows you to enable or disable specific floating-point exceptions such as:
- FE_DIVBYZERO
- FE_INVALID
- FE_OVERFLOW
- FE_UNDERFLOW
- FE_INEXACT
When enabled, triggering one of these exceptions will raise a SIGFPE (or SIGILL on Apple ARM64) on events such as division by zero or overflow, and a custom signal handler will print diagnostic information and terminate the process allowing detection and debugging of numerical issues.
Public static functions
- 
              static void enable_floating_point_exceptions(const std::string& names = "FE_DIVBYZERO, FE_INVALID, FE_OVERFLOW") 
- Enable/unmask specific floating-point exceptions. Use "FE_ALL_EXCEPT" to enable all exceptions.
- 
              static void disable_floating_point_exceptions(const std::string& names = "FE_ALL_EXCEPT") 
- Disable/mask specific floating-point exceptions. Use "FE_ALL_EXCEPT" to disable all exceptions.
- static void enable_custom_signal_handlers(bool force = false)
- Enable/install custom signal handlers to trigger on a raised floating-point exception.
- static void disable_custom_signal_handlers()
- Disable/restore original custom signal handlers saved by enable_custom_signal_handlers.
- 
              static void test(const std::string& names = "FE_ALL_EXCEPT") 
- Test floating-point exceptions raising for the specified names.
Function documentation
              static void eckit::
            Enable/unmask specific floating-point exceptions. Use "FE_ALL_EXCEPT" to enable all exceptions.
| Parameters | |
|---|---|
| names | Comma-separated string of exception names. | 
              static void eckit::
            Disable/mask specific floating-point exceptions. Use "FE_ALL_EXCEPT" to disable all exceptions.
| Parameters | |
|---|---|
| names | Cmma-separated string of exception names. | 
              static void eckit::
            Enable/install custom signal handlers to trigger on a raised floating-point exception.
| Parameters | |
|---|---|
| force | Installs signal handlers if force=true, or if force=false and floating-point exceptions have been enabled by this mechanism. | 
Installs custom signal handlers, platform-dependent SIGFPE (and SIGILL on Apple ARM64), saving the current (original) ones.
              static void eckit::
            Test floating-point exceptions raising for the specified names.
| Parameters | |
|---|---|
| names | Cmma-separated string of exception names. |