Gregory Hildstrom Projects Publications Resume Contact About Youtube

nantest

nantest is a simple demo program that shows how to test for calculations resulting in Not a Number (nan), positive infinity (inf), and negative infinity (-inf) in c++. nantest uses the finite() function call. sqrt(-1.0) would result in nan. 1/0 would result in inf. -1/0 would result in -inf.
//nantest.cpp
//simple program to demonstrate testing of non-finite values

//built and tested with
//g++ -o nantest nantest.cpp
//on Red Hat Linux gcc 3.2.2 kernel 2.4.22 on i686

#include <iostream>
using namespace std;


int main(){


	float denominator = 0;

	float plusinfinity = 1/denominator;
	float minusinfinity = -1/denominator;

	float nanumber = sqrt(-1.0);



	cout << "denominator: " << denominator;
	if(!finite(denominator))
		cout << " is not finite.\n";
	else
		cout << " is finite.\n";


	cout << "plusinfinity: " << plusinfinity;
	if(!finite(plusinfinity))
		cout << " is not finite.\n";
	else
		cout << " is finite.\n";


	cout << "minusinfinity: " << minusinfinity;
	if(!finite(minusinfinity))
		cout << " is not finite.\n";
	else
	 	cout << " is finite.\n";


	cout << "nanumber: " << nanumber;
	if(!finite(nanumber))
		cout << " is not finite.\n";
	else
	 	cout << " is finite.\n";


	return 0;
}//end main