Debugging a recent issue, where our _matherr handler was logging a call to sqrt with -1.#IND00 as input, and in this same scenario the system was crashing (the actual problem needing to be solved).

So to findout what input was going into the sqrt, as I suspected there was rubish being passed in, I wanted to know what -1.#IND00 was in binnary.

I knew that passing -1.0 to sqrt would result in -1.#IND00 in the result, so I altered the code:

int main ()
	double d = sqrt(-1.0);

int __cdecl _matherr(struct _exception *e)
	informf( "\nMath Error: %s, Parameters: %lf %lf, Return: %lf\n",
		e->name, e->arg1, e->arg2, e->retval ) ;

	union ccc
		double d;
		struct {
			long a;
			long b;
		} ll;

	ccc aa;

	aa.d = e->retval;

<break point here, and inspect aa in debugger>
	if( _isnan( e->retval ) ) {
		e->retval = 0 ;
	return 1 ;

results in the values:

aa.ll.a = 0;
aa.ll.b = 0xFFF80000;

And I posted this because Googling for -1.#IND00 got me no results.

2 thoughts on “-1.#IND00”

  1. The Google query didn’t get you results because the dash in front gives you pages that exclude the parameter, so your search included no keyword actually… Try without the dash ;)

  2. Ah, so caught up in my own world, I forgot about how Google parses the search terms. Ah look at all the results. Thank you Robert.

Comments are closed.