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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::isunordered	- std::isunordered

Synopsis
	  Defined in header <cmath>
	  bool isunordered( float x, float y );
								       (since
       C++11)
	  bool	isunordered( double x, double y	);			(until
       C++23)

	  bool isunordered( long double	x, long	double y );
	  constexpr bool isunordered( /* floating-point-type
	  */ x,						       (1)	(since
       C++23)
				      /* floating-point-type
	  */ y );
	  Additional overloads
	  Defined in header <cmath>
	  template<  class Arithmetic1,	class Arithmetic2 >	    (A)	(since
       C++11)
	  bool isunordered( Arithmetic1	x, Arithmetic2 y );	       (const-
       expr since C++23)

	  1) Determines	if the floating	point numbers x	and y  are  unordered,
       that is,	one or
	  both	are  NaN  and  thus  cannot be meaningfully compared with each
       other.
	  The library provides overloads for all cv-unqualified	floating-point
       types as	the
	  type of the parameters x and y.
	  (since C++23)
	  A) Additional	overloads are provided for all other  combinations  of
       arithmetic types.

Parameters
	  x, y - floating-point	or integer values

Return value
	  true if either x or y	is NaN,	false otherwise.

Notes
	  The  additional overloads are	not required to	be provided exactly as
       (A). They only
	  need to be sufficient	to ensure that for their first	argument  num1
       and second
	  argument num2:

	    *	 If    num1    or    num2   has	  type	 long	double,	  then
       std::isunordered(num1,
	      num2) has	the same effect	as std::isunordered(static_cast<long
	      double>(num1),
			       static_cast<long	double>(num2)).
	    * Otherwise, if num1 and/or	num2 has type  double  or  an  integer
       type,
	      then   std::isunordered(num1,  num2)  has	 the  same  effect  as
       (until C++23)
	      std::isunordered(static_cast<double>(num1),
			       static_cast<double>(num2)).
	    * Otherwise, if num1 or num2 has type float, then
	      std::isunordered(num1, num2) has the same	effect as
	      std::isunordered(static_cast<float>(num1),
			       static_cast<float>(num2)).
	  If num1 and num2 have	arithmetic types, then std::isunordered(num1,
	  num2)	has the	same effect as std::isunordered(static_cast</*
	  common-floating-point-type */>(num1),
			   static_cast</*	    common-floating-point-type
       */>(num2)),
	  where	 /*  common-floating-point-type	 */ is the floating-point type
       with
	  the greatest floating-point conversion rank and greatest
	  floating-point conversion subrank between  the  types	 of  num1  and
       num2,  (since C++23)
	  arguments of integer type are	considered to have the same
	  floating-point conversion rank as double.

	  If no	such floating-point type with the greatest rank	and subrank
	  exists,  then	overload resolution does not result in a usable	candi-
       date
	  from the overloads provided.

Example
       // Run this code

	#include <cmath>
	#include <iostream>

	#define	SHOW_UNORDERED(x, y) \
	    std::cout << std::boolalpha	<< "isunordered(" \
		      << #x << ", " << #y << "): " \
		      << std::isunordered(x, y)	<< '\n'

	int main()
	{
	    SHOW_UNORDERED(10, 01);
	    SHOW_UNORDERED(INFINITY, NAN);
	    SHOW_UNORDERED(INFINITY, INFINITY);
	    SHOW_UNORDERED(NAN,	NAN);
	}

Output:
	isunordered(10,	01): false
	isunordered(INFINITY, NAN): true
	isunordered(INFINITY, INFINITY): false
	isunordered(NAN, NAN): true

See also
	  fpclassify categorizes the given floating-point value
	  (C++11)    (function)
	  isnan	     checks if the given number	is NaN
	  (C++11)    (function)
	  C documentation for
	  isunordered

http://cppreference.com		  2024.06.10		   std::isunordered(3)

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

home | help