Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN

      From cppreference.com
      <c‎ |numeric‎ |math
       
       
       
      Common mathematical functions
      Functions
      Basic operations
      (C99)
      (C99)
      (C99)
      (C99)(C99)(C99)(C23)
      Maximum/minimum operations
      (C99)
      (C99)
      Exponential functions
      (C23)
      (C99)
      (C99)
      (C23)
      (C23)

      (C99)
      (C99)(C23)
      (C23)
      (C23)
      Power functions
      (C99)
      (C23)
      (C23)

      (C99)
      (C23)
      (C23)
      Trigonometric and hyperbolic functions
      (C23)
      (C23)
      (C23)
      (C23)
      (C99)
      (C99)
      (C99)
      Nearest integer floating-point
      (C99)(C99)(C99)
      (C23)(C23)(C23)(C23)
      Floating-point manipulation
      (C99)(C99)
      (C99)(C23)
      (C99)
      Narrowing operations
      (C23)
      (C23)
      (C23)
      (C23)
      (C23)
      (C23)
      Quantum and quantum exponent
      Decimal re-encoding functions
      Total order and payload functions
      Classification
      Error and gamma functions
      (C99)
      (C99)
      (C99)
      (C99)
      Types
      Macro constants
      Special floating-point values
      (C99)(C23)
      Arguments and return values
      FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN
      (C99)(C99)(C99)(C99)(C99)
      Error handling
      Fast operation indicators
       
      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)

      TheFP_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 isnormal, i.e. not an infinity, subnormal, not-a-number or zero
      FP_SUBNORMAL indicates that the value issubnormal
      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)

      [edit]Example

      Run this code
      #include <stdio.h>#include <math.h>#include <float.h> constchar*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 Inf0.0/0.0 is NaNDBL_MIN/2 is subnormal-0.0 is zero 1.0 is normal

      [edit]References

      • C17 standard (ISO/IEC 9899:2018):
      • 7.12/6 FP_NORMAL, ... (p: 169-170)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.12/6 FP_NORMAL, ... (p: 232)
      • C99 standard (ISO/IEC 9899:1999):
      • 7.12/6 FP_NORMAL, ... (p: 213)

      [edit]See also

      classifies the given floating-point value
      (function macro)[edit]
      C++ documentation forFP_categories
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/FP_categories&oldid=137150"

      [8]ページ先頭

      ©2009-2025 Movatter.jp