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 32-bit float, but promotion to 64 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 NaN
s in extreme circumstances only. Note that NaN
is not preserved under type conversion to integer types (see the examples below).
The following examples demonstrate a few calculations with the not-a-number constant.
--> nan*0 ans = <float> - size: [1 1] nan --> nan-nan ans = <float> - size: [1 1] nan
Note that NaN
s are preserved under type conversion to floating point types (i.e., float
, double
, complex
and dcomplex
types), but not integer types.
--> uint32(nan) ans = <uint32> - size: [1 1] 0 --> complex(nan) ans = <complex> - size: [1 1] nan 0.00000000 i