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