Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::isnan(3)		      C++ Standard Libary		 std::isnan(3)

NAME
       std::isnan - std::isnan

Synopsis
	  Defined in header <cmath>
	  bool isnan( float arg	);	  (1) (since C++11)
					      (constexpr since C++23)
	  bool isnan( double arg );	  (2) (since C++11)
					      (constexpr since C++23)
	  bool isnan( long double arg );  (3) (since C++11)
					      (constexpr since C++23)
	  bool isnan( IntegralType arg ); (4) (since C++11)
					      (constexpr since C++23)

	  1-3)	Determines  if the given floating point	number arg is a	not-a-
       number (NaN)
	  value.
	  4) A set of overloads	or a function template accepting the arg argu-
       ment of any
	  integral type. Equivalent to (2) (the	argument is cast to double).

Parameters
	  arg -	floating point value

Return value
	  true if arg is a NaN,	false otherwise

Notes
	  There	are many different NaN values with  different  sign  bits  and
       payloads, see
	  std::nan and std::numeric_limits::quiet_NaN.

	  NaN values never compare equal to themselves or to other NaN values.
       Copying a NaN
	  is  not  required,  by  IEEE-754, to preserve	its bit	representation
       (sign and payload),
	  though most implementation do.

	  Another way to test if a floating-point value	is NaN is  to  compare
       it with itself:
	  bool is_nan(double x)	{ return x != x; }

Example
       // Run this code

	#include <iostream>
	#include <cmath>
	#include <cfloat>

	int main()
	{
	    std::cout << std::boolalpha
		      << "isnan(NaN) = " << std::isnan(NAN) << '\n'
		      << "isnan(Inf) = " << std::isnan(INFINITY) << '\n'
		      << "isnan(0.0) = " << std::isnan(0.0) << '\n'
		      << "isnan(DBL_MIN/2.0) = " << std::isnan(DBL_MIN/2.0) <<
       '\n'
		      <<  "isnan(0.0  /	 0.0)	 = " <<	std::isnan(0.0/0.0) <<
       '\n'
		      << "isnan(Inf - Inf)   = " << std::isnan(INFINITY	-  IN-
       FINITY) << '\n';
	}

Output:
	isnan(NaN) = true
	isnan(Inf) = false
	isnan(0.0) = false
	isnan(DBL_MIN/2.0) = false
	isnan(0.0 / 0.0)   = true
	isnan(Inf - Inf)   = true

See also
	  nan
	  nanf
	  nanl	      not-a-number (NaN)
	  (C++11)     (function)
	  (C++11)
	  (C++11)
	  fpclassify  categorizes the given floating-point value
	  (C++11)     (function)
	  isfinite    checks if	the given number has finite value
	  (C++11)     (function)
	  isinf	      checks if	the given number is infinite
	  (C++11)     (function)
	  isnormal    checks if	the given number is normal
	  (C++11)     (function)
	  isunordered checks if	two floating-point values are unordered
	  (C++11)     (function)

http://cppreference.com		  2022.07.31			 std::isnan(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::isnan&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help