Está en la página 1de 31

EL SISTEMA DE PUNTO FLOTANTE

A.Casares M.
4 de mayo de 2008

Indice
1. El sistema numerico de punto otante 2
1.1. Preambulo [FM+77] . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Fuentes de error en el calculo numerico [Com05] . . . . . . . . 3
1.2.1. Simplicaciones introducidas en el modelo . . . . . . . 3
1.2.2. Errores en los datos . . . . . . . . . . . . . . . . . . . . 3
1.2.3. Errores de redondeo en los datos y en el calculo . . . . 4
1.2.4. Errores de truncamiento . . . . . . . . . . . . . . . . . 4
1.2.5. Otros tipos de errores . . . . . . . . . . . . . . . . . . . 4
1.3. N umeros de maquina [Com05], [FM+77] . . . . . . . . . . . . 4
1.3.1. Convenciones especiales . . . . . . . . . . . . . . . . . 8
1.3.2. Cardinalidad de F . . . . . . . . . . . . . . . . . . . . 9
1.3.3. Representaci on de n umeros en precision simple y doble
[Com05] . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.4. Operaciones de redondeo. Errores [Com05] . . . . . . . 10
1.3.5. La precision en F: epsilon de maquina . . . . . . . . . 11
1.3.6. Par ametros constantes de punto otante. . . . . . . . . 13
1.3.7. Ejemplos de representacion. . . . . . . . . . . . . . . . 15
1.3.8. Otros ejemplos de representaci on en punto otante . . 18
1.3.9. N umero de dgitos signicativos [DM72] . . . . . . . . 21
2. Operaciones aritmeticas en F 23
2.1. La operacion de suma . . . . . . . . . . . . . . . . . . . . . . . 23
2.2. Operaciones de multiplicacion y division . . . . . . . . . . . . 24
2.3. Resultados cuando los operandos no son de punto otante . . 24
2.4. Comparacion entre las leyes de las operaciones en F y en 1. . 26
2.4.1. Operaciones con n umeros reales . . . . . . . . . . . . . 27
2.4.2. Operaciones con n umeros de punto otante . . . . . . . 27
1
3. Ejercicios 27
4. Bibliografa 31
5. Referencias en la Web 31
1. El sistema numerico de punto otante
1.1. Preambulo [FM+77]
En la base de toda computacion numerica estan los n umeros mismos. El
sistema de punto otante, usado en la mayora de los procesos cientcos y
de ingeniera, es signicativamente diferente del sistema de n umeros usual en
la Matematica. El mal llamado conjunto de n umeros reales, 1, cimenta sobre
bases solidas el Calculo y el Analisis Matematico. Sin embargo, es frecuente
que olvidemos cuan imposible es representar los innitos n umeros reales en
el mundo real de los computadores nitos y que implicaciones tiene esa im-
posibilidad en la aritmetica que realizamos con esas maquinas.
El dise no nito del computador solo permite incorporarle un modelo re-
ducido de 1, que carece de tres de sus propiedades mas importantes: la
innitud, la densidad y la continuidad. A este modelo lo llamaremos F: el
conjunto de n umeros de punto otante o de n umeros de maquina. Hasta hace
alg un tiempo, aunque los postulados de representacion que sustentan F son
practicamente universales, su implementacion en los diversos tipos de maqui-
nas variaba en detalles dependientes del dise no del hardware y de los diversos
compiladores, por lo cual en realidad no exista un unico F, sino muchos, mas
o menos semejantes. En la actualidad, y a partir de 1985, el IEEE (Institute
of Electric and Electronic Engineers), ha establecido los estandares recogidos
en su norma IEEE 754, propugnados por INTEL y MOTOROLA, ocializa-
da como estandar ANSI en 1991 y, gracias a ello, actualmente de aplicacion
practicamente obligatoria, por razones de compatibilidad, para los dise nado-
res de computadoras, con lo cual se ha logrado casi una uniformidad ideal
1
.
Sin embargo, pese a los veinte a nos transcurridos desde su formulacion, la
norma del IEEE permanece a un desconocida para gran cantidad de estudian-
tes e ingenieros, quienes la consideran especializada, abstrusa y complica-
da, y rara vez le dedican la atencion que, como soporte fundamental de todo
1
Las variaciones que a un se dan no son de hardware, sino mas bien decisiones de im-
plementacion parcial que toman algunos dise nadores de compiladores y lenguajes, aunque
cada vez se va estandarizando mas tambien este aspecto.
2
calculo, merece. Se preere empezar a calcular, y, a lo mejor, solo despues de
frecuentes problemas, preocuparse del sistema numerico que los causa. Esta
incongruencia se explica, tal vez, porque no suelen encontrarse libros que
expongan con sencillez y detalle suciente las caractersticas de la represen-
tacion actualizada en punto otante, como en este texto pretendemos hacer
2
.
Inmediatamente sobre el sistema numerico esta el asunto aparentemente sim-
ple de evaluar funciones con precision. Otra vez, el estudiante piensa que lo
sabe hacer, sin tomar en cuenta las caractersticas especiales de la aritmetica
de punto otante, y toma una serie de dolorosas experiencias ense narle a
examinar cuidadosamente los procesos que va a usar antes de someterlos al
computador.
1.2. Fuentes de error en el calculo numerico [Com05]
Los resultados numericos pueden resultar inuenciados por diversos ti-
pos de errores. Es importante su clasicacion esquematica, aunque sea para
individualizar cuales son los que mas interesan a la materia.
1.2.1. Simplicaciones introducidas en el modelo
Son los errores debidos al hecho de que, por ejemplo, se ha supuesto un
modelo de tipo lineal, o se han considerado despreciables algunas magni-
tudes fsicas. En estos casos se habla de adecuaciones del modelo.
1.2.2. Errores en los datos
En general, los datos de un problema son el resultado de medidas, que
pueden ser inuenciadas por errores sistematicos o errores aleatorios. Sis-
tematicos son los errores que dependen de la sensibilidad del instrumento de
medicion, mientras que los aleatorios se deben a que se verican concomitan-
temente eventos impredecibles. A estos tipos de errores externos al calculo
los llamaremos inherentes.
El conocimiento, o, mas realsticamente, una estimacion de los errores en
los datos es importante para el calculo numerico. De ella depende de hecho,
como veremos, la seleccion de la precision y de las pruebas de terminacion
que se utilizaran en la implementacion de los algoritmos.
Mientras la estima de los errores sistematicos no es competencia especca
del Analisis Numerico, la de los errores aleatorios puede obtenerse a partir
de oportunas tecnicas estadsticas, en particular el metodo de los mnimos
2
[Ove02] es un texto didactico, claro y asequible, de obligada consulta en este tema.
3
cuadrados. Los errores relativos de este grupo pueden ser acotados por can-
tidades que dependen de las circunstancias de la medicion y de la precision
de los instrumentos de medida.
1.2.3. Errores de redondeo en los datos y en el calculo
Son los errores introducidos por la representaci on de los n umeros en la
computadora. Son el objeto principal del estudio del presente captulo. Como
se vera, la cota de los errores relativos de representaci on de un n umero es
el epsilon de maquina. Pero, aunque muy peque no cuando se presenta, cabe
preguntarse como se propagara este error a lo largo de calculos que pueden
ser muy largos.
1.2.4. Errores de truncamiento
Son los que se introducen cuando se aproxima un procedimiento innito
mediante un procedimiento nito. Por ejemplo, cuando se aproxima una de-
rivada por un cociente incremental, o un integral mediante una formula de
cuadratura.
1.2.5. Otros tipos de errores
En la lista anterior no se han incluido otras obvias posibles causas de error,
como por ejemplo los errores humanos, por desatencion a calculos manuales,
errores de introduccion de datos, ni tampoco los errores que un instrumento
de calculo, software o hardware, puede cometer.
1.3. N umeros de maquina [Com05], [FM+77]
Un conjunto de n umeros de punto otante, F , t, L, U, esta carac-
terizado por cuatro parametros: la base de representaci on (2 en la norma
IEEE754); la precision t; y los extremos del intervalo de variaci on del expo-
nente e [L, U]. A cada elemento X de F se lo llama n umero de maquina,
y tiene la forma X = (1)

m
e
, en la cual da el signo, m se conoce como
mantisa o signicando del n umero, y como norma general esta normalizada
de modo que 1 m < . La mantisa, de longitud ja, conserva los dgitos sig-
nicativos del n umero, y cuando esta normalizada y = 2 se puede escribir
como m = 1 + f, as que, en esos casos,
X = (1)

(1 + f)
e
= (1)

(1 +
d
1

+
d
2

2
+ . . .
d
t1

t1
)
e
(1)
4
Los dgitos d
1
, d
2
, d
3
. . . d
t1
son enteros que satisfacen: 0 d
i
< , (i =
1, 2 . . . t 1) ; f es una fraccion propia positiva, y e es un entero tal que
L e U.
Con estas especicaciones no sera posible representar un n umero muy
importante en cualquier sistema, el cero, as que hay que a nadirlo de alguna
manera, para completar F:
3
F(, t, L, U) = 0

X 1 = (1)

(1 +
t1

i=1
d
i

i
)
e
(2)
De las innitas formas de expresar X como el producto de un coeciente
por una potencia de la base, el sistema estandar actual, descrito en la nor-
ma IEEE 754, ha escogido esta normalizada para asegurar la unicidad de la
representaci on.
Antes de que esta norma entrase en vigencia en 1985, las representaciones
de punto otante diferan entre maquinas y entre lenguajes, y era frecuente
-como se puede encontrar a un hoy descrito en muchos libros de Analisis
Numerico- que se escogiera la representacion de la forma
X = (1)

f
e
= (1)

(
d
1

+
d
2

2
+ . . .
d
t

t
)
e
(3)
con d
1
diferente de 0 para cada X no nulo, (o sea
1
f < 1). Aunque
muy similar al actual, este sistema no le corresponde exactamente, de modo
que no es posible interpretar seg un esta pauta la representaci on que hoy se
encuentra en las computadoras personales y en practicamente cualquier otro
modelo.
Al sistema de n umeros F se lo llama normalizado. Notese que el n umero
1 que se a nade a f para obtener la mantisa o coeciente queda implcito, y
no se almacena fsicamente en el computador (lo cual permite un bit mas de
precision).
El entero e es el exponente y el n umero f = (
d
1

+
d
2

2
+. . .
d
t1

t1
) se conoce
como fraccion.
De la mantisa, lo que en realidad almacena la maquina es el entero
t1
f,
en un esquema com un de representaci on de enteros, usualmente la magnitud
3
La representacion de cero requiere una mantisa no normalizada.
5
con signo.
En la representaci on de un n umero de punto otante en el computador
se encuentran, entonces, tres partes diferentes: el signo, la caracterstica (que
no es mas que el exponente mas una constante llamada exceso), y la mantisa
(que es la fraccion representada mas 1).
En realidad, un computador puede usar varios sistemas de punto otante,
que varan en la precision de los n umeros representados, o sea, en el n umero
de bits de la palabra real (precision simple, doble, o extendida).
Por ejemplo, en el sistema de punto otante empleado en los computado-
res personales, ajustada a la norma IEEE754, la distribucion de la palabra
real de 32 bits que sirve para un n umero de punto otante en precision simple
es la que puede verse en la gura 1.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Mantisa (23 bits ms uno implcito)
Signo
caracterstica(8 bits) = exponente + 127
Figura 1: Precision simple IEEE (2,24,-126,127)
El paquete MATLAB, en el cual, por su orientacion matematica, la re-
presentaci on de punto otante es casi universal para todos los n umeros, usa
la precision doble, donde cada uno de estos se almacena normalmente en una
palabra real de 64 bits (gura 2).
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
1 2 3 4 5 6
Signo
Caracterstica (11 bits) = exponente + 1023
Mantisa (52 bits + 1 implcito)
Figura 2: Precision doble IEEE (2,53,-1022,1023)
Las representaciones de punto otante existentes actualmente en los compu-
6
tadores pueden diferir en ligeros detalles de las ideales que aqu discutiremos,
pero las diferencias son peque nas y casi siempre se puede ignorarlas cuando
se estudian los problemas fundamentales de los errores de redondeo. Si se
desea profundizar en detalles, debe recurrirse a la citada norma IEEE 754,
practicamente el estandar universal respecto a punto otante.
Para captar el aspecto de un sistema de n umeros de punto otante, cons-
truyamos un ejemplo en miniatura, F
0
, con parametros = 2, t = 3,
[L, U] = [2, 3] y exceso 3. Los n umeros pertenecientes a F
0
estan dados
por todas las combinaciones de signos, mantisas y exponentes. (Un bit del
signo, 3 de caracterstica y 2 de la fraccion, daran una palabra real de 6
bits). Limitemonos a los n umeros positivos:
Caracterstica 0 1 2 3 4 5 6 7
Mantisa Exponente -2 -2 -1 0 1 2 3 4
1.00
2
1/4 1/2 1 2 4 8
1.01
2
5/16 5/8 5/4 5/2 5 10
1.10
2
3/8 3/4 3/2 3 6 12
1.11
2
7/16 7/8 7/4 7/2 7 14
1/16 1/8 1/4 1/2 1 2
Las columnas correspondientes a los exponentes mnimo y maximo tienen
un signicado especial en la norma IEEE 754, que se explicara luego.
La ultima la indica la diferencia entre n umeros sucesivos para cada ex-
ponente. Note que esa diferencia va duplicandose conforme los exponentes
aumentan, lo cual signica que, mientras mayores son sus exponentes, los
n umeros se apartan mas unos de otros: su distribucion no es uniforme. Las
mantisas, en cambio, al ser representadas por n umeros enteros , son uniforme-
mente espaciadas, e igual cosa sucede, entonces, dentro de un grupo de n ume-
ros con igual exponente. (Su separacion sera
1t

log

X
=
(1t)+log

X
)
Este hecho se puede apreciar mejor en un graco
4
(gura3).
A diferencia de la recta de los n umeros reales, en la cual se marcan unida-
des de medida unicamente como referencia, en este graco las rayas verticales
corresponden a los n umeros de punto otante que realmente existen, y los
espacios intermedios estan vacos.
4
En el guion oatgui de [Mol04] se puede ver F
0
sin n umeros subnormales.
7
En la parte superior de la gura 3 se pueden notar claramente tres zonas:
La de underow, comprendida entre 0 y
1
4
, espacio vaco mayor al que se
presenta en los n umeros sucesivos y excepcion indeseable a la premisa
antes indicada. Para evitarla, la norma introduce los llamados n ume-
ros subnormales, no normalizados, que se describen mas adelante, y
aparecen en la parte inferior.
La zona comprendida entre
1
4
y 14, en donde estan los n umeros norma-
lizados que se ajustan a la representacion general indicada.
La zona que queda mas alla del n umero maximo, en la cual no existen
n umeros: es la zona de desbordamiento (overow)
Similar aspecto tiene la zona negativa, a la izquierda del origen.
1.3.1. Convenciones especiales
La norma introduce algunas convenciones especiales que permiten mejo-
rar las caractersticas de precision en las vecindades del cero, y el manejo de
condiciones de excepcion que pueden presentarse en los calculos:
Representacion del cero: Puesto que este necesita tener mantisa cero, no
puede adaptarse a la representacion normalizada ordinaria. Para considerar
este caso, el sistema suprime el 1 implcito cuando el exponente es el mnimo
(caracterstica 00 . . . 0). De ese modo, el n umero cero tiene dos representa-
ciones equivalentes: el signo (positivo o negativo), la caracterstica nula y la
mantisa nula.
Se aprovecho tambien esta convencion especial establecida cuando la ca-
racterstica es nula para introducir n umeros, mas cercanos a cero que el mni-
mo (
1
4
en F
0
), llamados subnormales. Estos no obedecen a la convencion del
Fo <> (2,3,2,3) sin nmeros subnormales
0 1 2 3 4 5 6 7 8 10 12 14
Fo con nmeros subnormales
0 1 2 3 4 5 6 7 8 10 12 14
Figura 3: Sistema miniatura
8
1 implcito: su mantisa es directamente la fraccion representada, que puede ir
de 0.0 . . . 1
2
a 0.1 . . . 1
2
, lo cual puebla de n umeros el espacio existente entre
cero y el mnimo normalizado, y disminuye el problema de la brecha en la
zona de underow. Eso s, estos n umeros tiene menor precision que el resto
(de 1 a t 1 dgitos signicativos), ya que pueden comenzar con ceros a la
izquierda, los cuales desperdician espacios signicativos.
As como se asigno un signicado especial a la caracterstica nula, tam-
bien se le dio un papel especial a la maxima caracterstica: cuando la mantisa
es cero, representa innito (inf), positivo o negativo seg un el signo, y si no es
cero, se usa para representar secuencias especiales, que no son n umeros sino
codigos de diferentes tipos de errores aritmeticos, conocidos como NaN (not
a number).
Estos valores y codigos son manejados consistentemente por el hardware
de punto otante
5
.
La tabla completa de los n umeros positivos de F
0
sera, entonces
Caracterstica 0 1 2 3 4 5 6 7
Mantisa / Exponente -2 -2 -1 0 1 2 3 -
1.00
2
(0.00
2
para car=0) 0 1/4 1/2 1 2 4 8 Inf
1.01
2
(0.01
2
para car=0) 1/16 5/16 5/8 5/4 5/2 5 10 NAN
1.10
2
(0.10
2
para car=0) 1/8 3/8 3/4 3/2 3 6 12 NAN
1.11
2
(0.11
2
para car=0) 3/16 7/16 7/8 7/4 7/2 7 14 NAN
1/16 1/16 1/8 1/4 1/2 1 2 -
1.3.2. Cardinalidad de F
El conjunto F no es un conjunto innito, y menos continuo: a partir de
la descripcion anterior es facil concluir que tiene exactamente 2
t1
(U L+
2) 1 n umeros en el (a mas de +inf, -inf y 2
t1
-2 no n umeros). Estos no
estan igualmente espaciados a lo largo de su dominio, sino solo dentro de
cada potencia de la base . En nuestro ejemplo miniatura, la cardinalidad
resulta 2.2
2
(7) 1 = 55, de los cuales 48 n umeros son normalizados (24 po-
sitivos y 24 negativos), 6 subnormales (3 positivos y 3 negativos) y el cero.
Los NaN son tambien 6 (3 positivos y 3 negativos) y hay ademas + y -inf.
5
Los primitivos modelos de maquinas de la familia de procesadores Intel 80x86, ma-
nejaban el punto otante mediante software, pero podan incorporar para ese proposito
procesadores especiales por hardware (llamados 80x87), mucho mas ecientes. Desde la
aparicion de los 80486, el procesador de hardware se integro totalmente al principal y
desaparecio como chip independiente.
9
En total, hay 64 diferentes secuencias de bits, dos de ellas equivalentes (las
dos versiones del cero).
En el sistema de precision simple, (FPs), la cardinalidad resulta 2
24
(255)
1, o sea 4278190079 n umeros. Hay ademas 2
24
2 NaN. En el sistema de pre-
cision doble (FPd), hay 2
53
(1023) 1 = 9214364837600034815 n umeros y
2
53
2 no n umeros.
1.3.3. Representaci on de n umeros en precision simple y doble
[Com05]
Veamos como representar un n umero real positivo X, dado en la forma 1
en un sistema F (, t, L, U). Pueden presentarse los siguientes casos:
1. El n umero X es tal que L e U y d
i
= 0 para i t; en ese caso, X
es un n umero de maquina y puede representarse exactamente.
2. El exponente e no pertenece al intervalo [L, U]. El n umero no puede
ser representado exactamente en forma normalizada. Si e > L t,
al desnormalizar a X haciendo otar el punto hacia la izquierda, el
aumento consiguiente de e lo hace L; si todava d
i
= 0 para i t,
X es un n umero subnormal y a un tiene una representaci on exacta. En
caso contrario, se dice que se verica un underow; usualmente se toma
como valor aproximado de X el n umero cero.
Si e > U se presenta un overow o desbordamiento, y se toma como
resultado Inf (lease Innito).
3. El exponente e [L, U], pero las cifras d
i
, para i t, no son todas nulas.
En este caso se presenta el problema de escoger el n umero de maquina
que represente a X en F. Esa operacion se llama generalmente redondeo,
aunque en realidad se pueden utilizar tecnicas de diversos tipos. El que
vamos a explicar a continauci on es el mas preciso, y se conoce como
redondeo simetrico o redondeo al mas cercano.
1.3.4. Operaciones de redondeo. Errores [Com05]
Sea X un n umero real positivo de la forma (1), X = m
e
distinto de
cero y con e [L, U]. Llamemos fl(X) al n umero de maquina (es decir,
fl(X) F), que se obtiene de uno de los modos siguientes:
10
Chopping
6
: fl(X) =
e
chop(m) =
e
(1 +

t1
i=1
d
i

i
)
Redondeo: fl(X) =
e
chop(m+
1
2

1t
) = chop

1+

t1
i=1
d
i

i
+
1
2

1t

La denicion se adapta de forma obvia cuando X es negativo.


El n umero as encontrado, fl(X), es el n umero de maquina mas cercano a X.
Observamos que, si d
t
< /2, entonces las dos operaciones dan el mismo
resultado. Si no
7
, dieren en
e+1t
. En las operaciones de redondeo se puede
dar un desbordamiento.
Subrayamos el hecho de que en la sustitucion de X por fl(X) esta el
origen de los errores de redondeo. Es importante, por consiguiente, establecer
una estimacion, es decir, una mayoracion de la cantidad fl(X) X.
Denicion de error aboluto de redondeo 1.3.4.1 Error absoluto de la
representacion de X:
X
= fl(X) X.
Denicion de error relativo de redondeo 1.3.4.2 Error relativo de la
representacion de X ,= 0:
X
=
fl(X)X
X
1.3.5. La precision en F: epsilon de maquina
Como hemos visto, a causa de que F es un conjunto nito, no hay posi-
bilidad de representar el continuo de los n umeros reales en el con cualquier
grado de detalle. De hecho, los n umeros reales mayores en valor absoluto que
el maximo elemento de F no pueden representarse de ninguna manera como
n umeros. Si X es un n umero real en el dominio de F, fl(X) (o rd(X)) es el
n umero de F mas cercano a X. Notese que si X equidista de dos n umeros de
F, entonces fl(X) podra tomar cualquiera de sus dos valores vecinos. Para
evitar esta ambig uedad sin afectar al equilibrio global entre redondeo hacia
arriba y hacia abajo, la norma prescribe que, cuando el n umero a redondear
se encuentra exactamente en la mitad del intervalo entre dos n umeros de
punto otante, el redondeo se haga hacia el n umero cuya mantisa termina
en 0. Por ejemplo, en FPs, fl(1 + 2
24
) = 1, (redondeo hacia abajo); pero
fl((1 + 2
23
) + 2
24
) = 1 + 2
22
(redondeo hacia arriba)
6
Una posible traduccion al castellano sera truncamiento, pero no la usaremos para
evitar la confusion con el error de truncamiento de una serie
7
Esta magnitud se conoce como ULP= 2eps
e
(unidad de ultimo lugar) [Ove02].
11
Es facil probar que, si X esta en el dominio de F, entonces:

fl(X) X
X

k
1t
(4)
Donde k =
1
2
para el caso de redondeo simetrico y k = 1 para los otros
casos
8
.
El importante valor que se obtiene cuando el redondeo es simetrico (
1
2

1t
)
se conoce como precision o epsilon de maquina (eps), y equivale a la mitad de
la distancia existente entre los n umeros de exponente cero (seg un la formula
de separacion
1t+logX
cuando la base es 2 y 1 m < 2). De aqu se pue-
de deducir que cualquier n umero positivo menor que eps no alcanza a cubrir
la mitad del espacio que separa dos n umeros de punto otante contiguos en
este grupo (ULP), y por consiguiente, de acuerdo con las reglas del redondeo
simetrico, al sumarse al mas peque no no llega a afectarlo.
Aplicado esto al n umero 1 y tomando en cuenta la norma para caso de
empate -la cual provoca que cuando estemos justo en la mitad del intervalo
entre 1 y su vecino superior el redondeo produzca 1
9
- conduce a un algoritmo
muy sencillo para hallar el valor de eps en un sistema de punto otante
de base , que puede incluirse al comienzo de programas donde se manejen
estimaciones de error:
beta = ; eps = 1.; y = 2.;
while(y > 1.) {
eps = eps/ ;
y = 1.+eps;
}
As, eps =
1
2

1t
es el mas grande n umero de maquina positivo tal que
fl(1 + eps) = 1.
Notese que, por (4), [
X
[ eps, es decir el epsilon de maquina es la cota
superior del valor absoluto del error relativo de redondeo. Esto nos permite
escribir fl(X) = X(1 + ), [ [ eps.
En sustancia, en una computadora que utiliza punto otante, no tiene
sentido buscar aproximaciones de n umeros con una precision relativa inferior
8
En los n umeros subnormales, o en casos de underow la mayoracion (4) no se cumple.
9
Muchos autores no toman esto en cuenta y a naden al nal del algoritmo que sigue la
proposicion eps = eps, que incrementa incorrectamente el valor del epsilon de maquina.
12
a la correspondiente precision de maquina eps.
1.3.6. Parametros constantes de punto otante.
El siguiente guion MATLAB averigua varios de los n umeros lmites de
punto otante:
%ctespf
%-------------------------------------------------------------------------
% Calculo de constantes de punto flotante (MATLAB)
%-------------------------------------------------------------------------
eeps = 1.; yy = 2; seps=single(eeps); y=single(yy); t=0; ipr=0;
fprintf(DETERMINACION DE CONSTANTES EN PRECISION SIMPLE Y
DOBLE:\n)
while y > 1.
seps = single(seps/2.);
y = single(1.+seps);
t = int16(t+1);
end fprintf(\nEPSILON DE MAQUINA EN PRECISION SIMPLE:);
fprintf(\nEpsilon = %15.8e, t = %d,seps, t);
fprintf(\nHexadecimal: %s\n,num2hex(seps));
t = 0; while yy > 1.
eeps = eeps/2.;
yy = 1.+eeps;
t = t+1;
end fprintf(\nEPSILON DE MAQUINA EN PRECISION DOBLE:);
fprintf(\nEpsilon = %23.16e, t = %d,eeps, t);
fprintf(\nHexadecimal: %s\n,num2hex(eeps));
fprintf(\nNUMEROS POSITIVOS EXTREMOS EN PUNTO FLOTANTE:\n);
fprintf(\nEN PRECISION SIMPLE:); maxexp=127;
fprintf(\nMaximo = %15.8e, t = %d,realmax(single), maxexp);
fprintf( (Hex: %s),num2hex(realmax(single)));
t = 0; y = 1; caract=maxexp; while single(y) > 0.
y1 = y;
y = y / 2.;
caract = caract-1;
t=t-1;
if caract == 0 & ipr == 0
ipr = 1;
fprintf(\nMnimo Normal = %15.8e, t = %d,y1, t+1);
fprintf( (Hex: %s),num2hex(single(y1)));
end
end
13
fprintf(\nMn.Subnormal = %15.8e, t = %d,y1, t+1);
fprintf( (Hex: %s\n\n,num2hex(single(y1)));
fprintf(EN PRECISION DOBLE:); maxexp=1023;
fprintf(\nMaximo = %15.8e, t = %d,realmax, maxexp);
fprintf( (Hex: %s),num2hex(realmax));
t = 0; yy = 1; ipr = 0; caract=maxexp; while(yy > 0.)
yy1 = yy;
yy = yy / 2.;
caract = caract-1;
t=t-1;
if caract == 0 & ipr == 0
ipr = 1;
fprintf(\nMnimo Normal = %23.16e, t = %d,yy1, t+1);
fprintf( (Hex: %s),num2hex(yy1));
end
end
fprintf(\nMn.Subnormal = %23.16e, t = %d,yy1,t+1);
fprintf( (Hex: %s)\n,num2hex(yy1));}
La salida del programa es la siguiente:
DETERMINACION DE CONSTANTES EN PRECISION SIMPLE Y DOBLE:
EPSILON DE MAQUINA EN PRECISION SIMPLE:
Epsilon = 5.96046448e-008, t = 24
Hexadecimal: 33800000
EPSILON DE MAQUINA EN PRECISION DOBLE:
Epsilon = 1.1102230246251565e-016, t = 53
Hexadecimal: 3ca0000000000000
NUMEROS POSITIVOS EXTREMOS EN PUNTO FLOTANTE:
EN PRECISION SIMPLE:
Maximo = 3.40282347e+038, t = 127, (Hex: 7f7fffff)
Mnimo Normal = 1.17549435e-038, t = -126 (Hex: 00800000)
Mn.Subnormal = 1.40129846e-045, t = -149 (Hex: 00000001)
EN PRECISION DOBLE:
Maximo = 1.79769313e+308, t = 1023, (Hex: 7fefffffffffffff)
Mnimo Normal = 2.2250738585072014e-308, t =-1022 (Hex: 0010000000000000)
Mn.Subnormal = 4.9406564584124654e-324, t =-1074 (Hex: 0000000000000001)
En otros compiladores menos modernos se pueden notar varias diferencias:
por ejemplo, esta denido como mnimo n umero de punto otante el que en
realidad es el mnimo normalizado tan solo. Esto se debe a que la versi on usa-
da del compilador no ha incorporado totalmente el estandar IEEE754, mien-
tras que el MATLAB s lo ha hecho. Conviene implementar este programa
14
en el compilador que se vaya a usar para conocer este tipo de particularidades.
1.3.7. Ejemplos de representaci on.
Resulta interesante vericar que, en realidad, las especicaciones indica-
das se cumplen en una computadora. Por ejemplo, un decimo = 0.1
10
, que a
menudo se escoge como el tama no del paso en muchos algoritmos, se repre-
senta en punto otante de precision simple de la siguiente manera:
Como 0.1
10
= (0.000110011001100...)
2
, al normalizarlo se tiene 0.1
10
=
(1.10011001100...)
2
4
Por consiguiente, la fraccion que le corresponde, escrita con 24 dgitos
signicativos es 0.100110011001100110011001 . . .. Como el espacio reservado
para la fraccion en precision simple es de 23 bits, el redondeo exige que se au-
mente 1 en la ultima posicion si el primer dgito que no alcanza en ese espacio
es 1. Dado que eso sucede aqu, entonces
t1
f es 10011001100110011001101.
La caracterstica se calcula como el exponente mas el exceso: 4 +127 =
123, cuyo numeral binario es 01111011. Precedido del signo = 0, que co-
rresponde a un n umero positivo, el numeral binario de un decimo es, entonces:
00111101110011001100110011001101
cuya mascara hexadecimal es 3DCCCCCD.
El siguiente guion MATLAB determina la palabra real correspondiente a
n umeros de punto otante ingresados como datos en precision simple y doble
y la expresa en hexadecimal.
%decodpf
%--------------------------------------------------------------------------
% Guion MATLAB para decodificar los bytes de un numero de punto flotante
% en precision simple y doble.
%-------------------------------------------------------------------------
fprintf(REPRESENTACION DE NUMEROS REALES EN PUNTO FLOTANTE,
PRECISION SIMPLE Y DOBLE:\n)
xs=B;
while sum(xs~=0)~=0
xs=input(Deme un numero real x=,s);
if size(xs,2)>40
fprintf(Demasiados dgitos\n\n )
else
%Para terminar, ingrese 0 o <Enter>
x=str2num(xs);
if ~isempty(x) | x ~= 0
fprintf(Precision simple: %s,num2hex(single(x)));
15
fprintf( (fl(x)= %f)\n,single(x));
fprintf(Precision doble : %s,num2hex(x));
fprintf( (fl(x)= %18.16f)\n\n\n,x);
else
fprintf(Argumento invalido\n)
end
end
end
Para un decimo el programa arroja:
REPRESENTACION DE NUMEROS REALES EN PUNTO FLOTANTE, PRECISION SIMPLE
Y DOBLE:
Deme un numero real x=0.1
Precision simple: 3dcccccd (fl(x)= 0.100000)
Precision doble : 3fb999999999999a (fl(x)= 0.1000000000000000)
Se puede hacer la transformacion en sentido inverso y se halla as el valor
exacto de fl(X):
fl(0.1) = 1.10011001100110011001101
2
4 = 1.99999A
16
1
fl(0.1) = (1 + (99999A
16
/16
6
10
))/16
10
fl(0.1) = (1 + 10066330/16777216)/16
fl(0.1) = 0.100000001490116119384765625
De modo que el error de redondeo es cercano a 1.49012
10
9. Si suma-
mos, entonces, varias veces un decimo, el resultado acumulara estos errores
y resultara afectado en mayor medida.
Entonces, el valor un decimo (0.1
10
), que a menudo se escoge como el
tama no del paso en muchos algoritmos, proporciona un ejemplo instructivo
de error de redondeo.
Corramos otro guion MATLAB que lo hace evidente. Podemos, ademas,
comprobar la mejora de precision que se logra -dentro de ciertos lmites -con
el uso de la precision doble, a costa de emplear el doble de espacio de alma-
cenamiento:
%sumdec
%Suma de un decimo en punto flotante MATLAB:
un_decimo = single(0.1); suma = single(0.);
un_ddecimo = 0.1; ssuma = 0.;
veces=input(Cuantas veces desea sumar? );
fprintf(Suma de %d veces un decimo:\n\n,veces);
16
for i=1:veces
suma = single(suma+un_decimo);
ssuma = ssuma+un_ddecimo;
end
fprintf(En precision simple, suma = %13.13f\n,suma);
fprintf(En precision doble, suma = %20.20f\n,ssuma);
La prediccion anterior se puede comprobar cabalmente cuando se suma 0.1+0.1:
Suma de 2 veces un decimo:
En precision simple, la suma es 0.2000000029802
En precision doble, la suma es 0.2000000000000
Si se suma mas de dos veces, a mas del efecto del error de los datos, intervie-
nen los errores de redondeo de las operaciones intermedias, a veces negativos
y otras positivos, lo cual requiere un analisis mas detallado, con herramien-
tas que veremos mas adelante. De cualquier manera, los resultados reejan
la acumulacion de errores
10
:
Por ejemplo:
Suma de 9999 veces un decimo:
En precision simple, la suma es 999.9000244140625
En precision doble, la suma es 999.90000000015880000000
Suma de un 10001 veces un decimo:
En precision simple, la suma es 1000.1000366210937
En precision doble, la suma es 1000.10000000015880000000
Pese a la relativa peque nez de la diferencia entre el valor exacto del n ume-
ro y su representacion binaria, no es trivial, como tragicamente lo experi-
mentaron los 28 soldados estadounidenses estacionados en Dharan, Saudi
Arabia, quienes fallecieron el 25 de Febrero de 1991 por una falla de su ba-
tera antiaerea Patriot, la cual no fue capaz de interceptar un misil Scud
disparado por el enemigo iran durante la primera guerra del Golfo, debi-
do precisamente a esa diferencia y a un software descuidado. (Consultar
www.math.psu.edu/dna/disasters).
10
Curiosamente, en la implementacion del formato simple del MATLAB, si se suma un
n umero de veces m ultiplo de 5, los errores de redondeo se compensan y el resultado en
FP
s
resulta exacto.
17
A partir del momento de la ultima deteccion en el radar y de la velocidad
conocida de un misil ya disparado, el computador de la batera Patriot estaba
programado para determinar el sitio aproximado donde el misil aparecera en
el horizonte, a n de localizarlo en su pantalla y luego interceptarlo. El calcu-
lo del espacio recorrido es funcion de la velocidad y del tiempo transcurrido.
Para calcular este, el reloj interno llevaba continuamente la cuenta del n ume-
ro entero de decimas de segundo que el sistema estaba en funcionamiento,
y en alg un momento esta informacion deba ser transformada a n umero real
para multiplicarla por la velocidad del misil, asimismo expresada como real.
El almacenamiento de los n umeros reales en ese sistema, no conforme
a la norma IEEE754, se haca en un registro de punto jo de 24 bits: as,
un decimo se guardaba como 0.00011001100110011001100
2
, con el error de
truncamiento del resto de la representacion igual a 0.11001100...
2
23 , equi-
valente aproximadamente a 1.999A
16
6 = 9.5367795E 8. Este valor se
empleaba para transformar las decimas de segundo a segundos, hallar la di-
ferencia de tiempos y despues multiplicarla por la velocidad del misil. En
ese momento, el computador haba estado encendido durante un perodo de
unas 100 horas, as que el n umero de decimas de segundo acumuladas era
cercano a 100 3600 10 = 3.6
10
6, y la conversion a segundos, por el error
mencionado, fue inexacta por 0.34332 segundos, mientras la informacion del
radar vena directamente en segundos.
Como la velocidad del Scud era de 1676 m/s, la distancia calculada tuvo
un error de 575.4m, distancia suciente para no aparecer en la pantalla de
b usqueda de la batera
11
.
1.3.8. Otros ejemplos de representaci on en punto otante
Hallar la palabra real que representa al n umero en precision simple.
11
Cuales fueron los principales errores?: no solo la limitada precision de la represen-
tacion y el haber mantenido encendido el computador por tiempo tan largo, sino sobre
todo el haber realizado la conversion a segundos antes de restar los tiempos. Suponiendo
que el lanzamiento del misil se hiciera desde 400 Km, se podan calcular los 4 minutos
transcurridos antes de impactar en el blanco como la diferencia, en enteros, entre algo
similar a 3602400 y 3600000 = 2400 decimas de segundo (sin problemas en enteros de 24
bits, que llegan hasta 16777215 = 2
24
1), y la conversion a segundos de este lapso habra,
entonces, tenido el error de 0.000228882708 s, lo cual afectaba a la distancia calculada
en 0.384 m, menos de 40 centmetros, sin ninguna importancia para la localizacion del
proyectil en la pantalla de la batera.
18
1. Hallemos el numeral binario de = 3.1415926535897932 . . .
Usaremos hexadecimal como interfaz: (como necesitamos 24 bits
en la mantisa en FPs, requerimos hallar seis dgitos hexadecima-
les). Mediante el algoritmo de Horner se obtiene:
= 3.243F6A. . .
16
= 11.001001000011111101101010 . . .
2
2. Luego normalizamos la mantisa, operacion a partir de la cual obte-
nemos el exponente (=1, para compensar el movimiento del punto
fraccionario un lugar hacia la izquierda)
12
:
= 1.1001001000011111101101010 . . .
2
1
3. Despues se redondea la mantisa, atendiendo al valor del bit 25
(que vale 1):
1.100100100001111110110101010
+1
------------------------------
1.100100100001111110110101011
4. Luego, fl() = 1.100100100001111110110101011
2
1
y podemos hallar las partes de la palabra real que lo representan:
= 0 (n umero positivo)
caracterstica = 1 + 127 = 80
16
mantisa = 1.921FB6
16
= 1 + f
Que, colocadas en la palabra real, dan lo indicado en la Figura 4,
correspondiente a la mascara hexadecimal 40490FDB.
0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1
Caracterstica Fraccin como entero
Figura 4: Palabra real de en precision simple.
El proceso inverso, a partir de la mascara hexadecimal, nos da el valor
de fl(): (1.921FB6
16
)2
1
= (1 + 0.5707963705)2 = 3.141592742,
que coincide en 7 cifras con , y

= 2.813
10
8 < eps.
Hallar la palabra real que representa a en precision doble.
12
Tambien se puede calcular el exponente con la formula e = log
2
| =
log
log2
| = 1
19
1. Ahora requerimos el numeral binario de = 3.1415926535897932385 . . .
con 53 bits, es decir 14 dgitos hexadecimales:
Mediante el algoritmo de Horner se obtiene:
= 3.243F6A8885A30 . . .
16
= 11.0010010000111111011010101000100010000101101000110000 . . .
2
2. La normalizacion de la mantisa, nos da el exponente =1, como en
el ejemplo anterior:
= 1.10010010000111111011010101000100010000101101000110000 . . .
2
1
3. Despues se redondea la mantisa, atendiendo al valor del bit 53
(que vale 0). Es decir, se trunca el resto del numeral.
4. Luego podemos hallar las zonas de la palabra real que representan
a en precision doble:
= 0 (n umero positivo)
caracterstica = 1 + 1023 = 400
16
mantisa = 1.921FB54442D18
16
= 1 + f
Notese que la caracterstica ocupa 11 bits, de modo que el primer
bit del primer dgito hexadecimal (que sera siempre 0) no se re-
presenta.
Colocadas las tres zonas en la palabra real, dan la mascara hexa-
decimal 400921FB54442D18, que se forma mas facilmente a partir
de las zonas que en el caso de la precision simple.
En este caso, si hallamos fl() a partir de la mascara hexadecimal,
llegamos a: (1.921FB54442D18
16
)2
1
= (1 + 0.57079632679490)2 =
3.14159265358980, que coincide en 15 cifras (redondeadas) con , y
[

[ = 4.894e 17 < eps.


Hallar el n umero representado por una palabra real dada:
Sabiendo que X tiene una sola cifra en su mantisa cuando se escribe
en notacion cientca, hallar el error relativo de su representacion en
punto otante si la mascara hexadecimal de su palabra real es 80034447.
Primero escribimos la mascara en binario e identicamos las partes:
Obviamente, ya que la longitud de la palabra real es 32, se trata de
precision simple.
= 1 (n umero negativo)
caracterstica = 0 e = 126 (n umero subnormal, sin 1 implcito)
mantisa = 0.06888E
16
(solo 15 dgitos signicativos)
cuyo valor es 0.02552115918
10
2
20
1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1
Caracterstica Fraccin como entero
Figura 5: Mascara en binario.
En total, el n umero es (0.02552115918)2
126
= 2.999997844
10
40.
El n umero representado
13
, seg un la descripcion que se da de el en el
enunciado es, entonces, (3)10
40
, de modo que el error relativo es

x
=
2.999997844(3)
3
, pues se simplican los exponentes, lo que da un
error relativo de 0.718
6
, cuyo modulo es > eps = (5.96)10
8
.
En este ejemplo se puede ver que la cota establecida para el error
relativo no rige para los n umeros subnormales. Esto es tambien evi-
dente, porque el n umero de dgitos correctos en fl(x) (considerado que
3 = 2.999999999 . . .) es de solo 6, y no de 7, mientras que en precision
simple, para los n umeros normales, debera ser al menos 7, como se
explica en el siguiente punto.
1.3.9. N umero de dgitos signicativos [DM72]
Mientras trabajamos con numerales propios del dispositivo de calculo
que estemos empleando (binarios en una computadora actual y decimales en
una calculadora), no hay duda sobre el n umero de dgitos signicativos que
contienen esos numerales. En ese caso, estamos seguros de dos armaciones:
a).- Ning un numeral con mas dgitos de los que caben en el espacio de
representaci on asignado internamente a cada n umero podra ser repre-
sentado exactamente - es decir, ninguno correspondera a un n umero de
maquina.
b).- Todos los numerales que, por su cantidad limitada de dgitos, alcan-
zan ntegramente en el espacio asignado (llamado palabra real ) corres-
ponden a n umeros de maquina, y por consiguiente son representados
sin error de redondeo en el dispositivo.
As por ejemplo, sabemos sin duda que, si un numeral consta de 16 dgitos
binarios, por ejemplo, el n umero correspondiente es un n umero de maquina
13
Vease tambien el resultado del guion hex2single(80034447).
21
en FPs. Y otro de 30 bits puede ser representado exactamente en FPd pero
no en FPs.
Pero, cuando queremos extender ese concepto a un sistema que no es el
nativo del dispositivo, como nuestro habitual sistema decimal con respecto a
las computadoras, esa certidumbre se diluye, y debemos buscar una forma de
denir el n umero de dgitos signicativos decimales a partir de la informa-
cion que tenemos sobre la forma en que los n umeros se almacenan en punto
otante.
La razon de esta particularidad es que no hay una relacion exacta entre
la base decimal y la base binaria (como s la hay, por ejemplo, entre las
bases binaria y hexadecimal, pues 16 = 2
4
). Esto acarrea que numerales
decimales de pocos dgitos se conviertan en numerales binarios de mucha
mayor longitud, que puede llegar a ser hasta innita (el caso de 0.1
10
).
14
Extrapolando la identidad encontrada en un sistema nativo, dado que
el epsilon de maquina debe ser el mismo expresado en cualquier sistema,
podemos denir de la siguiente manera los dgitos (o cifras) signicativas en
otra base de los numerales representados en ese sistema
15
.
Denicion de cifras signicativas 1.3.9.1 X F tiene t cifras signi-
cativas en base eps =
1
2

1t
Si llamamos t
10
al n umero de cifras decimales signicativas que tienen los
n umeros de maquina de F(, t, L, U) resulta:
1
2
10
1t
10
=
1
2

1t
(1 t
10
) = (1 t)log
10
t
10
= 1 + (t 1)log
10
|
Si aplicamos esta formula a FPs resulta t
10
= 7, y a FPd nos da t
10
= 16.
Quiere decir esto, en analoga a las armaciones a) y b) que hicimos antes,
que ning un numeral de mas de t
10
cifras puede representarse exactamente,
y que todos los que tienen menos de t
10
cifras corresponden a n umeros de
maquina? No!, por la falta de concordancia ya anotada entre las cifras de
fracciones expresadas en base 10 y base 2. Que quiere decir, entonces?:
que las primeras t
10
cifras del numeral decimal coinciden con las del numeral
binario almacenado, lo cual se puede comprobar al obtener impreso el n umero
en cuestion.
14
En el otro sentido no sucede, pues cualquier potencia negativa de 2 puede representarse
exactamente en decimal.
15
Otras formas de denicion se han propuesto, pero resultan imprecisas.
22
2. Operaciones aritmeticas en F
Al ser un modelo del sistema de los n umeros reales, el conjunto F tiene
denidas en el operaciones aritmeticas, que son realizadas por el computador
digital. Suponga que x y y son n umeros de punto otante. Entonces la suma
exacta x + y frecuentemente no estara en F. Por ejemplo, tome el sistema
F
0
de 55 puntos ilustrado anteriormente; sea x = 7/8 , y = 5/4. As que la
operacion de adicion, por ejemplo, debe ser simulada en el computador por
una aproximaci on, la suma de punto otante. Idealmente, si x, y F y el
n umero x + y esta dentro del dominio de F
x y = fl(x + y) = (x + y)(1 + ), [ [ eps. (5)
donde denota suma de punto otante. En la mayora de computadores, se
alcanza este ideal, o casi, para todas esas x y y. De modo que en nuestro
sistema de 55 puntos esperaramos que
7/8 5/4 = fl(17/8) = 2
cuyo error relativo vale en modulo [ 2
17
8
[=
1
8
eps. Veamos si en realidad
es as.
2.1. La operacion de suma
Es ilustrativo observar la forma en que el computador ejecuta la opera-
cion:
Al no ser iguales los exponentes, no puede sumar directamente las mantisas
(sera como sumar los numeradores de fracciones con denominadores dife-
rentes). Por eso, comienza por igualar los exponentes, desnormalizando el
n umero mas peque no. Esto quiere decir que dejara otar su punto decimal
hacia la izquierda un n umero de posiciones igual a la diferencia entre los
exponentes. As, para compensar la disminucion de valor producida por es-
te desplazamiento, el exponente del n umero peque no debera igualarse al del
mayor. Ahora ya se pueden sumar, entonces, las mantisas.
Hay que recordar que esta, y el resto de operaciones que vamos a revisar,
se ejecutan en los registros de la unidad aritmetica logica, de alta velocidad
y suciente longitud como para aceptar muchas cifras mas que la mantisa
ordinaria.
Una vez obtenida la suma, habra que convertirla a su representacion nor-
malizada, para poder guardar el resultado en una palabra real. Esto implica
dos pasos: volver a normalizar la mantisa, y mantener solo t dgitos en la
respuesta (contando al 1 implcito). Como ya se dijo, esta ultima operacion
23
representa un redondeo hacia abajo o hacia arriba, seg un si la primera cifra
que queda fuera de la mantisa (la de orden t) es menor o no que la mitad de
la base. En contadas ocasiones, luego de este redondeo puede ser necesario
volver a normalizar.
7/8= 1.11
2
1 0.111
2
0 + (desnormalizado)
5/4= 1.01
2
+ 0 1.010
2
0
10.001
2
0 = 1.0001
2
1 1.00
2
1 = 2
Que era el resultado previsto. En forma parecida se ejecuta la resta.
2.2. Operaciones de multiplicacion y division
La operaciones de multiplicaci on y division no requieren de desnormali-
zacion. En ellas se suman o restan los exponentes. El error de redondeo es en
esos casos mas probable, por cuanto los resultados generalmente tienen mas
de t dgitos signicativos (pueden llegar a tener 2t dgitos).
El proceso de la multiplicaci on, por ejemplo, consiste en multiplicar las man-
tisas, sumar los exponentes, normalizar y redondear correctamente (en este
orden). Es posible que el redondeo de lugar a la necesidad de una nueva nor-
malizacion.
Con los mismos valores del ejemplo anterior:
7/85/4 = 1.11
2
1 1.01
2
0 = 10.0011
2
1
Normalizado = 1.00011
2
0 1.00
2
0 = 1
Como 1 = fl(7/85/4) = fl(35/32) en F
0
, tambien en este caso se esta cum-
pliendo lo que viene a ser la denicion de las operaciones en punto otante,
cuando los operandos son n umeros de maquina:
x, y F x y = fl(x y) = xy(1 + ), [ [ eps (6)
Donde representa la operacion en el computador y +, , ,
2.3. Resultados cuando los operandos no son de punto
otante
La denicion anterior (6) es tranquilizadora: al hacer una operacion con
dos n umeros de punto otante, el resultado es el mejor que cabra esperar, y
24
el error relativo tiene cotas muy peque nas en FPs, y a un mas en FPd. Con
errores tan peque nos y ya acotados, la precision de los resultados es conocida
y decididamente muy aceptable. Pero recordemos que (6) se dedujo para el
caso de que x, y F y estamos haciendo solo una operacion, es decir, solo
hay una instancia de error.
Que sucede en el caso en que x, y , F, o cuando se ejecuten, no una, sino
varias operaciones de punto otante? Sera todava optimo el resultado?
En este caso van a haber mas instancias de error: una en cada operando al
momento de ingresarlo al computador (errores de datos) y otra al momento
de hacer cada operacion.
Si llamamos z al resultado exacto, ahora calcularemos el resultado apro-
ximado z = x y = fl(fl(x) + fl(y)) = (x(1 +
x
) + y(1 +
y
))(1 +
1
)
z = x + y + x
x
+ y
y
+
1
+ O(eps
2
)
16
.
La expresion resumida en la notacion O(eps
2
) es demasiado peque na pa-
ra que valga la pena tomarla en cuenta, y as podemos escribir la igualdad
aproximada de primer orden
z
.
= x + y + x
x
+ y
y
+
1
que, debidamente acotada, arroja:
[
z
[
[ x [ + [ y [
[ x + y [
+ 1)eps (7)
suponiendo que los errores de los datos x e y fueran solo de redondeo.
Si los signos de x e y son iguales, la cota se convierte en 2eps, es decir, el
resultado puede tener un error relativo mayor en modulo que la precision de
la maquina, y ya no sera, entonces, fl(x + y).
Hagamos un ejemplo mas, para la funcion
17
w = (x + y) + z, cuando
x, y, z , F:
w = (x y) z = fl(fl(fl(x) + fl(y)) + fl(z))
w = ((x(1 +
x
) + y(1 +
y
))(1 +
1
) + z(1 +
z
))(1 +
2
)
w
.
= x
x
+ y
y
+ z
z
+ (x + y)
1
+ (x + y + z)
2
Y, acotando esta expresion tenemos:
[
w
[
[ x [ + [ y [ + [ z [
[ x + y + z [
eps +
[ x [ + [ y [
[ x + y + z [
eps + eps
16
Lease De orden eps cuadrado
17
Note la necesidad del parentesis
25
si, otra vez, suponemos que x, y y z son del mismo signo y sus errores son
solo de redondeo (sin considerar errores inherentes), la cota se convierte en
[
w
[

[ x + y [
[ x + y + z [
+ 2

eps (8)
Esta cota puede llegar a ser, entonces, mas del doble de eps, y el resultado
w podra estar mas alejado de float(w).
Notese que el uso de cotas, aunque no nos da un valor exacto del error
en un caso particular -lo cual implicara conocer los valores de los errores
individuales, cosa que, aunque, como hemos visto, se puede lograr, resul-
ta sumamente minuciosa- en cambio tiene la gran ventaja de darnos una
respuesta que engloba todos los casos de la forma considerada: es el error
maximo posible, que en ning un caso podra ser excedido
18
, por lo cual pode-
mos movernos con seguridad dentro de esa tolerancia pesimista.
A partir de estos ejemplos podemos percatarnos, ademas, de que el manejo
algebrico puede complicarse y resultar inmanejable rapidamente, en funcion
de la cantidad de operaciones, y que necesitaremos una herramienta mas agil
para llegar a estas mismas cotas y resultados: esa sera la serie de Taylor.
2.4. Comparacion entre las leyes de las operaciones en
F y en 1.
La representacion geometrica de los n umeros reales como puntos de una
lnea llamada el eje real es de sobra conocida. A cada n umero real corrres-
ponde uno y solo un punto de la lnea, y viceversa. Es decir, hay una corres-
pondencia biunvoca entre el conjunto de los n umeros reales y el conjunto de
puntos de la recta. Por esta causa, a menudo usaremos las palabras n umero
y punto indistintamente.
Una posible particion del conjunto de los reales es en el de los n umeros ra-
cionales y el de los irracionales. Entre cualquier par de n umeros racionales
(o irracionales) de la recta hay un n umero innito de n umeros racionales (o
irracionales). Esto nos lleva a llamar al conjunto de los n umeros racionales
(y al de los irracionales) un conjunto denso.
18
Al menos si nos mantenemos dentro del rango de n umeros normales
26
2.4.1. Operaciones con n umeros reales
Las leyes que rigen las operaciones con los n umeros reales (Cuadro 1) nos
permiten actuar de acuerdo con las leyes usuales del algebra. En general,
cualquier conjunto, como 1 en este caso, cuyos elementos satisfacen estas
leyes, es llamado un campo.
2.4.2. Operaciones con n umeros de punto otante
Como se puede advertir en el Cuadro 2, muchas de las leyes de los reales
no se cumplen o lo hacen en forma parcial cuando se trabaja con n umeros
de punto otante. Esto se debe fundamentalmente al espacio limitado que
puede ocupar cada n umero y a la nitud de todo el conjunto, que, ademas,
no es ni denso ni continuo. Estas salvedades hacen que la aritmetica de punto
otante no sea exactamente la aritmetica ideal, exacta de la teora. Pero,
sin embargo, es la unica que existe en la practica! Por esta razon necesitamos
familiarizarnos con ella para trabajar responsablemente en calculos cientcos
o de ingeniera en el computador.
3. Ejercicios
Ejercicio 3.1: Hallar tres n umeros con numerales decimales de menos
de 7 dgitos que no puedan representarse exactamente en FPs y otros, con
numerales de mas de 7, que s sean n umeros de maquina.
Ejercicio 3.2: Mostrar que en F (10, 8, 99, 99) la ley asociativa de
la suma no se cumple para los siguientes datos: a = 2.3371258
10
5, b =
3.3678429
10
1, c = 3.3677811
10
1
Ejercicio 3.3: Ilustrar en F
0
con x = 2.26, y = 2.76, z = 4.51 que el error
del resultado al calcular (x+y)+z es mayor que eps. Comparar con la cota (8).
Ejercicio 3.4:Comprobar los casos de incumplimiento de las leyes de los
reales presentados en el cuadro 2.
Ejercicio 3.5: Mostrar con un ejemplo en FPs que el error relativo de
redondeo en la representaci on de un resultado que es un n umero subnormal
puede ser de magnitud mayor a eps.
27
Ejercicio 3.6: Los siguientes n umeros son datos en una calculadora de
base 10 y t=4 cifras signicativas:
(a) 4.523
10
3, (b)2.115
10
4, (c)2.583
10
0
Ejecutar las siguientes operaciones e indicar el error en el resultado, supo-
niendo redondeo simetrico.
1. (a) + (b) + (c) 3. (a) (b) (c)
2. (a)/(c) 4. (a)(b)/(c)
Ejercicio 3.7: Evaluar correctamente la expresion de Rump:
19
y = 333.75 b
6
+a
2
(11 (a
2
) (b
2
) b
6
121 b
4
2) +5.5 b
8
+a/(2 b),
con a = 77617, b = 33096
19
Intente escribiendo la expresion de varias maneras equivalentes. En punto otante
siempre tendra problemas. Intente en MATLAB usando la aritmetica de longitud variable,
funcion vpa, u otro paquete como Maple o Mathematica.
28
Cuadro 1: Leyes de los reales.
Ley Enunciado
Clausurativa unvoca a, b 1 a + b, ab 1
Conmutativa de la su-
ma
a + b = b + a
Asociativa de la suma a + (b + c) = (a + b) + c
Conmutativa de la
multiplicacion
ab = ba
Asociativa de la multi-
plicacion
a(bc) = (ab)c
Distributiva de la mul-
tiplicacion respecto a
la suma
a(b + c) = ab + ac
Modulativa a + 0 = 0 + a = a; 1.a = a.1 = a. 0 es la identidad
respecto a la suma, 1 lo es respecto a la multiplicacion
Invertiva respecto a la
suma
a x 1 [ x + a = 0. x se llama inverso respecto a la
suma y se denota por a
Invertiva respecto a la
multiplicacion
a ,= 0 x 1 [ ax = 1. Se denota a x como a
1
o 1/a
Cancelativa a + b = a b = 0
29
Cuadro 2: Leyes de los n umeros de punto otante.
Ley Cumplimiento
Clausurativa unvoca No se cumple por posible overow. En F
0
: a = 10, b = 8
Conmutativa de la su-
ma
S se cumple
Asociativa de la suma No siempre se cumple. Ej: En F
0
: a = 10, b = 3, c = 0.5
Conmutativa de la
multiplicacion
S se cumple
Asociativa de la multi-
plicacion
No siempre se cumple. Ej: En F
0
: a = 0.25, b =
0.1875, c = 10
Distributiva de la mul-
tiplicacion respecto a
la suma
No siempre se cumple. Ej: En F
0
: a = 3, b = 0.625, c =
0.75
Modulativa a + 0 = 0 + a = a; 1.a = a.1 = a. Se cumplen, pero
las identidades no son unicas. Ej: Para la suma en F
0
:
10 0.25 10
Invertiva respecto a la
suma
Se cumple, pero el inverso no siempre es unico. Ej: En
F
0
: 0.3125 0.25 0
Invertiva respecto a la
multiplicacion
a ,= 0 x 1 [ ax = 1. No siempre se cumple. Ej: En
F
0
: 12 no tiene inverso.
Cancelativa No se cumple. Ej.: [ [ eps 1+ [ [= 1 con ,= 0
30
4. Bibliografa
Referencias
[Ove02] OVERTON, Michael: Computo Numerico con Aritmetica de punto
otante IEEE754. Sociedad Matematica Mexicana, Mexico, 2002
[Com05] COMINCIOLI, Valeriano: Analisi Numerica: metodi, modelli, appli-
cazioni. APOGEO srl, Milan, Copyright 2005.
[DM72] DORN S. y Mc.CRACKEN D. Numerical Methods with FORTRAN
IV case studies. Wiley International, Estados Unidos, 1972.
[FM+77] FORSYTHE George, MOLER Cleve and MALCOLM Michael. Com-
puter Methods for mathematical computations. Prentice-Hall, Engle-
wood Clis, N.J., 1977.
[Cas06] CASARES, Alejandro: Material colocado en el FTP
[Mol04] MOLER, Cleve B.- Numerical computing with MATLAB. SIAM.
Mathworks, Cambridge, 2004. http://www.mathworks.com/moler/
5. Referencias en la Web
1. Simulador de punto otante:
http://www.minet.uni-jena.de/ sack/SS04/download/IEEE-754.html
2. Editor hexadecimal: HEX Editor Neo:
www.hhdsoftware.com/Products/home/hex-editor-free.html
31

También podría gustarte