Search code examples
c++stdborland-c++

Checking if a complex number has NaN


I'm trying to check if a std::complex number that is a result of a fourier transform (using http://fftw.org/) contains a NaN in either the real or imag part.

I'm using Borland C++, so I don't have access to std::isnan. I have tried to check if the number is NaN by comparing it to itself:

(n.imag() != n.imag())

However, as soon as I call the n.imag() or std::imag(n), I get a "floating point invalid operation".

Is there any way to validate if a std::complex is good; if it contains a NaN?


Solution

  • I found out that Borland has its own math library. So if you want to avoid floating point errors, use IsNan from Borlands Math.

    http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Math_IsNan@Double.html