Infinity and NaN
Infinity
MATLAB® represents infinity by the special value Inf. Infinity
results from operations like division by zero and overflow, which lead to results too
large to represent as conventional floating-point values. MATLAB also provides a function called Inf that returns the IEEE® arithmetic representation for positive infinity as a
double scalar value.
Several examples of statements that return positive or negative infinity in MATLAB are shown here.
|
|
|
|
Use the isinf function
to verify that x is positive or negative infinity:
x = log(0);
isinf(x)
ans =
1
NaN
MATLAB represents values that are not real or complex numbers with a special value
called NaN, which stands for “Not a Number”. Expressions
like 0/0 and inf/inf result in
NaN, as do any arithmetic operations involving a
NaN:
x = 0/0 x = NaN
You can also create NaNs by:
x = NaN; whos x Name Size Bytes Class x 1x1 8 double
The NaN function returns
one of the IEEE arithmetic representations for NaN as
a double scalar value. The exact bit-wise hexadecimal
representation of this NaN value is,
format hex x = NaN x = fff8000000000000
Always use the isnan function
to verify that the elements in an array are NaN:
isnan(x)
ans =
1
MATLAB preserves the “Not a Number” status
of alternate NaN representations and treats all
of the different representations of NaN equivalently.
However, in some special cases (perhaps due to hardware limitations), MATLAB does
not preserve the exact bit pattern of alternate NaN representations
throughout an entire calculation, and instead uses the canonical NaN bit
pattern defined above.
Logical Operations on NaN
Because two NaNs are
not equal to each other, logical operations involving NaN always
return false, except for a test for inequality, (NaN ~= NaN):
NaN > NaN
ans =
0
NaN ~= NaN
ans =
1