C NAN Number

Are you know how to create NAN number (Not a Number) in C? If you use Matlab, you can create NAN number by fill value variable with nan value (example : a=nan). What the the meaning of NAN number? NaN (Not a Number) is a value of the numeric data type representing an undefined or unrepresentable value, especially in floating-point calculations (from wikipedia). We can create NAN number by :

• The divisions 0/0 and ±∞/±∞
• The multiplications 0×±∞ and ±∞×0
• The additions ∞ + (−∞), (−∞) + ∞ and equivalent subtractions
• etc

When use C, I want to create NAN number or to check NAN number. So, I create a simple C code to create NAN number and to check a number is NAN or not. Create new file and save with name ceknan.c. Copy this code to that file.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv)
{
float a, b, c,d ;
int ceknan;

a = NAN;       //create nan number
c = sqrt(-1);  //create nan number
b = 10;        //create real number
d = a-b;       //create nan number

printf("print number\n");
printf("a=%f b=%f c=%f d=%f\n", a,b,c,d);

printf("\ncheck nan number \n");
printf("use isnan(x), a is nan =%i, b is nan =%i \n", isnan(a), isnan(b));

printf("\ncompare value of x to check number is nan or not \n");
if(a==a) ceknan = 0;
else ceknan = 1;
printf("a is nan = %i \n", ceknan);

if(b==b) ceknan = 0;
else ceknan = 1;
printf("b is nan = %i \n", ceknan);
return(1);
}

Compile this C Check NAN Number code in terminal with command :

gcc ceknan.c -o ceknan -lm

This is output from this C Check NAN Number program :

toto@andLinux:~/workspace\$ ./ceknan
print number
a=nan b=10.000000 c=nan d=nan

check nan number
use isnan(x), a is nan =1, b is nan =0

compare value of x to check number is nan or not
a is nan = 1
b is nan = 0

I use isnan function (function from C check NAN number is nan or not) and use variable compared function. So, if you want to check NAN number in C, you can use isnan function or compared a variable with itself. If that variable not equal with that variable itself. So, we can conclude that number is NAN.