fpclassify() in C++

In this tutorial, we will learn about fpclassify function in C++ also here will be an example of an illustration of the code. Thus, to understand the concept clearly please read the content.

fpclassify() in C++

The fpclassify function/ Method is present in Cmath library. So let us see the syntax for the fpclassify function.

Syntax

fpclassify() in C++ syntax

Note

The value z which will be matched with one of the macro constants. Now, since the return type is an integer so this function will return some value It returns the following values:

  • FP_INFINITE: Positive or negative infinity.
  • FP_ZERO: Value of zero.
  • FP_NAN:   Not a number
  • FP_SUBNORMAL: Subnormal value.
  • FP_NORMAL: Normal value.
    Thus let us see the code for this fclassify function in c++

CODE

#include <iostream> 
#include <math.h> 
using namespace std; 

void fpfind(double z) 
{ 

  
  switch (fpclassify(z)) { 
//  z will be compared to macros and based on that it will return a value which will be checked in this switch case
  case FP_INFINITE: 
    cout << "Infinite Number \n"; 
    break; 


  case FP_NAN: 
    cout << "Not a Number \n"; 
    break; 

 
  case FP_ZERO:
    cout << "Zero \n"; 
    break; 

 
  case FP_SUBNORMAL: 
    cout << "Subnormal value \n"; 
    break; 
 
  case FP_NORMAL: 
    cout << "Normal value \n"; 
    break; 

  // For the data to be invalid 
  default: 
    cout << "Invalid number \n"; 
  } 
} 
 
int main() 
{ 


  double a = 1.0 / 0.0; 
  cout << "For 1.0/0.0: "; 
  fpfind(a); 
  
  double b = 0.0 / 0.0; 
  cout << "For 0.0/0.0: "; 
  fpfind(b);  
  
  double c = -0.0; 
  cout << "For -0.0: "; 
  fpfind(c); 
    
  double d = 1.0; 
  cout << "For 1.0: "; 
  fpfind(d); 

  return 0; 
} 

Please check the output from below.

output:

For 1.0/0.0: Infinite Number
For 0.0/0.0: Not a Number
For -0.0: Zero
For 1.0: Normal value

--------------------------------
Process exited after 8.58 seconds with return value 0
Press any key to continue . . .

Also read: Set of vectors in C++

Leave a Reply