From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/c/numeric%2Fmath%2Ffp_categories.html | 54 +++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 devdocs/c/numeric%2Fmath%2Ffp_categories.html (limited to 'devdocs/c/numeric%2Fmath%2Ffp_categories.html') diff --git a/devdocs/c/numeric%2Fmath%2Ffp_categories.html b/devdocs/c/numeric%2Fmath%2Ffp_categories.html new file mode 100644 index 00000000..520ed9eb --- /dev/null +++ b/devdocs/c/numeric%2Fmath%2Ffp_categories.html @@ -0,0 +1,54 @@ +

FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN

Defined in header <math.h>
#define FP_NORMAL    /*implementation defined*/
+
(since C99)
#define FP_SUBNORMAL /*implementation defined*/
+
(since C99)
#define FP_ZERO      /*implementation defined*/
+
(since C99)
#define FP_INFINITE  /*implementation defined*/
+
(since C99)
#define FP_NAN       /*implementation defined*/
+
(since C99)

The FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN macros each represent a distinct category of floating-point numbers. They all expand to an integer constant expression.

+ + + + + + +
Constant Explanation
FP_NORMAL indicates that the value is normal, i.e. not an infinity, subnormal, not-a-number or zero
FP_SUBNORMAL indicates that the value is subnormal
FP_ZERO indicates that the value is positive or negative zero
FP_INFINITE indicates that the value is not representable by the underlying type (positive or negative infinity)
FP_NAN indicates that the value is not-a-number (NaN)

Example

#include <stdio.h>
+#include <math.h>
+#include <float.h>
+ 
+const char *show_classification(double x) {
+    switch(fpclassify(x)) {
+        case FP_INFINITE:  return "Inf";
+        case FP_NAN:       return "NaN";
+        case FP_NORMAL:    return "normal";
+        case FP_SUBNORMAL: return "subnormal";
+        case FP_ZERO:      return "zero";
+        default:           return "unknown";
+    }
+}
+int main(void)
+{
+    printf("1.0/0.0 is %s\n", show_classification(1/0.0));
+    printf("0.0/0.0 is %s\n", show_classification(0.0/0.0));
+    printf("DBL_MIN/2 is %s\n", show_classification(DBL_MIN/2));
+    printf("-0.0 is %s\n", show_classification(-0.0));
+    printf(" 1.0 is %s\n", show_classification(1.0));
+}

Output:

+
1.0/0.0 is Inf
+0.0/0.0 is NaN
+DBL_MIN/2 is subnormal
+-0.0 is zero
+ 1.0 is normal

References

See also

+ +
+
(C99)
classifies the given floating-point value
(function macro)
C++ documentation for FP_categories
+

+ © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
+ https://en.cppreference.com/w/c/numeric/math/FP_categories +

+
-- cgit v1.2.3