Main Content

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.

x = 1/0
x =
Inf

x = 1.e1000
x =
Inf

x = exp(1000)
x =
Inf

x = log(0)
x =
-Inf

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