Infinito y NaN
Infinito
MATLAB® representa el infinito mediante el valor especial Inf
. El infinito es el resultado de operaciones como la división entre cero y el desbordamiento, que dan lugar a resultados demasiado grandes como para representarlos como valores convencionales de punto flotante. MATLAB también proporciona una función llamada Inf
que devuelve la representación aritmética de IEEE® de un infinito positivo como valor escalar double
.
Se muestran varios ejemplos de instrucciones que devuelven un infinito positivo o negativo en MATLAB.
|
|
|
|
Utilice la función isinf
para verificar que x
es un infinito positivo o negativo:
x = log(0); isinf(x) ans = 1
NaN
MATLAB representa los valores que no son números reales ni complejos con un valor especial llamado NaN
, que sustituye al texto “Not a Number” (en inglés, no es un número). Expresiones como 0/0
e inf/inf
dan como resultado NaN
, al igual que cualquier operación aritmética con un NaN
:
x = 0/0 x = NaN
También puede crear NaN
de la siguiente forma:
x = NaN; whos x Name Size Bytes Class x 1x1 8 double
La función NaN
devuelve una de las representaciones aritméticas de IEEE de NaN
como valor escalar double
. La representación hexadecimal exacta bit por bit de este valor NaN
es:
format hex x = NaN x = fff8000000000000
Utilice siempre la función isnan
para verificar que los elementos de un arreglo son NaN
:
isnan(x) ans = 1
MATLAB conserva el estado “Not a Number” de las representaciones alternativas de NaN
y trata todas las diferentes representaciones de NaN
de forma equivalente. Sin embargo, en algunos casos especiales (quizás debido a limitaciones de hardware), MATLAB no conserva el patrón exacto de bits de las representaciones alternativas de NaN
durante todo el cálculo y, en su lugar, utiliza el patrón canónico de bits NaN
definido anteriormente.
Operaciones lógicas en NaN
Debido a que dos NaN
no son iguales entre sí, las operaciones lógicas con NaN
siempre devuelven el valor false, excepto en las pruebas de desigualdad, (NaN ~= NaN
):
NaN > NaN ans = 0 NaN ~= NaN ans = 1