Skip to contentSkip to conversation

NAN and complex.h

DISCUSSION TOMAZ 3 participants 3 messages Sep 18, 2007 – Sep 24, 2007

lore
Share & tools
lore

TOMAZ

author
#0 lore raw

Hi I made a program which basically averages data from a file. The data is stored as complex float and I'm reading it with fread with no problem. Some data are taged as NAN (at least ENVI, an image procesing soft read these values as NAN). If I average the whole data adding a number with a NAN gives me a NAN and my whole program fails.

What I did is the folowing which doesn't seems to work:

if(cabsf(zhhzhh)!= NAN)

{
    printf("%f\n", cabsf(zhhzhh));
}

For some reason the test seeams to be positive all the time, I keep printing NAN's ("nan" actualy).

Any idea?

Tomas

Signature · 2 lines
View this message in context: http://www.nabble.com/NAN-and-complex.h-tf4477349.html#a12766829
Sent from the linux-c-programming mailing list archive at Nabble.com.
#1 lore raw
Quoted 9 lines · TOMAZ

Hi I made a program which basically averages data from a file. The data is stored as complex float and I'm reading it with fread with no problem. Some data are taged as NAN (at least ENVI, an image procesing soft read these values as NAN). If I average the whole data adding a number with a NAN gives me a NAN and my whole program fails.

What I did is the folowing which doesn't seems to work:

if(cabsf(zhhzhh)!= NAN)

Quoted 8 lines
{
    printf("%f\n", cabsf(zhhzhh));
}

For some reason the test seeams to be positive all the time, I keep printing NAN's ("nan" actualy).

Any idea?

NaN is not equal to anything, including itself.

To test for NaN, use isnan(). If you don't have isnan() (it's C99, not C89), test whether "x != x" (true for NaN, false for everything else).

Signature · 1 line
Glynn Clements <[email protected]>
#2 lore raw
In reply to TOMAZ
Quoted 9 lines

Hi I made a program which basically averages data from a file. The data is stored as complex float and I'm reading it with fread with no problem. Some data are taged as NAN (at least ENVI, an image procesing soft read these values as NAN). If I average the whole data adding a number with a NAN gives me a NAN and my whole program fails.

What I did is the folowing which doesn't seems to work:

if(cabsf(zhhzhh)!= NAN)

Quoted 8 lines
{
   printf("%f\n", cabsf(zhhzhh));
}

For some reason the test seeams to be positive all the time, I keep printing NAN's ("nan" actualy).

Any idea?

use isnan or isfinite to check for wrong values

BX