NAN Not-a-Number Constant

Section: Base Constants

Usage

Returns a value that represents ``not-a-number'' for both 32 and 64-bit floating point values. This constant is meant to represent the result of arithmetic operations whose output cannot be meaningfully defined (like zero divided by zero).
   y = nan

The returned type is a 64-bit float, but demotion to 32 bits preserves the not-a-number. The not-a-number constant has one simple property. In particular, any arithmetic operation with a NaN results in a NaN. These calculations run significantly slower than calculations involving finite quantities! Make sure that you use NaNs in extreme circumstances only. Note that NaN is not preserved under type conversion to integer types (see the examples below).

Example

The following examples demonstrate a few calculations with the not-a-number constant.
--> nan*0

ans = 

       nan 

--> nan-nan

ans = 

       nan 

--> 
quit

Note that NaNs are preserved under type conversion to floating point types (i.e., float, double, complex and dcomplex types), but not integer types.

--> uint32(nan)

ans = 

 0 

--> complex(nan)

ans = 

       nan +  0.0000i 

--> 
quit