Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Aritm PF
Aritm PF
Bibliografa
"Computer architecture. A quantitative approach". Hennessy & Patterson, Morgan Kaufmann, 1995. Apndice A (David Goldberg). "Computer arithmetic algorithms". I. Koren, Prentice Hall, 2002 Computer Arithmetic: Algorithms and Hardware Design, B.Parhami. Oxford UP. 2000 "What every computer scientist should know about floating-point arithmetic", David Goldberg, ACM Computing Surveys. V.23, n.1, pg.5-18, 1991.
+ 6.02 10 -23
mantisa base
+ 1.01110 2 -1101
mantisa base
En todo nmero en coma flotante se distinguen tres componentes: Signo: indica el signo del nmero (0= positivo, 1=negativo) Mantisa: contiene la magnitud del nmero (en binario puro) Exponente: contiene el valor de la potencia de la base (sesgado) La base queda implcita y es comn a todos los nmeros, la ms usada es 2. El valor de la secuencia de bits ( s, ep-1, ..., e0, mq-1, ..., m0 ) es: (1) s V ( m) 2V ( e ) Dado que un mismo nmero puede tener varias representaciones (0.11025 = 11022 = 0.011026) los nmeros suelen estar normalizados: un nmero est normalizado si tiene la forma 1.xx...2xx... ( 0.1xx ...2xx...) dado que los nmeros normalizados en base 2 tienen siempre un 1 a la izquierda, ste suele quedar implcito (pero debe ser tenido en cuenta al calcular el valor de la secuencia)
4
El rango de valores representable por cada uno de los campos es: Exponente (8 bits con sesgo de 128) : -128 ... +127 Mantisa (23 bits normalizados) : los valores binarios representables oscilan entre 1.00... y 1.11..., es decir entre 1 y 2-2-23 (2-ulp) ( 1.11...1 = 10.00...0 - 0.0...1 )
underflow underflow negativo positivo overflow negativo nmeros negativos expresables nmeros positivos expresables overflow positivo
-(2.0-2-23)2127
-1.02-128
1.02-128
(2.0-2-23)2127
Obsrvese que la cantidad de nmeros representables es 232 (igual que en coma fija). Lo que permite la representacin en coma flotante es ampliar el rango representable a costa de aumentar el espacio entre nmeros representable (un espacio que no es uniforme).
-n
2n
4n 5
IEEE 754
2 formatos con signo explcito, representacin sesgada del exponente (sesgo igual a (2n-1-1=127), mantisa normalizada con un 1 implcito (1.M) y base 2.
precisin simple (32 bits): 1 bit de signo, 8 de exponente, 23 de mantisa 1.02-126 ... (2-2-23)2127 = 1.210-38 .. 3.41038 precisin doble (64 bits): 1 bit de signo, 11 de exponente, 52 de mantisa 1.02-1022 ... (2-2-52)21023 = 2.210-308 .. 1,810308
2 formatos ampliados para clculos intermedios (43 y 79 bits). Codificaciones con significado especial Infinito (e=255, m=0): representan cualquier valor de la regin de overflow NaN (Not-a-Number) (e=255, m>0): se obtienen como resultado de operaciones invlidas Nmero denormalizado (e=0, m>0): es un nmero sin normalizar cuyo bit implcito se supone que es 0. Al ser el exponente 0, permiten representar nmeros en las regiones de underflow. El valor del exponente es el del exponente ms pequeo de los nmeros no denormalizados: -126 en precisin simple y 1022 en doble. Cero (e=0, m=0): nmero no normalizado que representa al cero (en lugar de al 1) Excepciones: Operacin invlida: , 0, 00, , x mod 0, x cuando x<0, x= Inexacto: el resultado redondeado no coincide con el real Overflow y underflow Divisin por cero
IEEE 754
El estndar exige que el resultado de las operaciones sea el mismo que se obtendra si se realizasen con precisin absoluta y despus se redondease. Hacer la operacin con precisin absoluta no tiene sentido pues se podran necesitar operandos de mucha anchura. Existen 4 modos de redondeo: Redondeo al ms cercano (al par en caso de empate) Redondeo a ms infinito (por exceso) Redondeo a menos infinito (por defecto) Redondeo a cero (truncamiento)
Al realizar una operacin cuntos bits adicionales se necesitan para tener la precisin requerida? Un bit r para el redondeo Un bit s (sticky) para determinar, cuando r=1, si el nmero est por encima de 0,5 Tabla de operaciones de redondeo Tipo de redondeo - + 0 Ms prximo Signo del resultado0 +1 si (r or s) +1 si (r and p0) or (r and s) +1 si (r and p0) or (r and s) Signo del resultado<0 +1 si (r or s)
6.144102 9.975104
rm no
Mtodo de suma/resta :
Extraer signos, exponentes y magnitudes. Tratar operandos especiales (por ejemplo, alguno de ellos a cero) Desplazar la mantisa del nmero con exponente ms pequeo a la derecha |e1-e2| bits Fijar el exponente del resultado al mximo de los exponentes Si la operacin es suma y los signos son iguales, o si la operacin es resta y los signos son diferentes, sumar las mantisas. En otro caso restarlas Detectar overflow de la mantisa Normalizar la mantisa, desplazndola a la derecha o a la izquierda hasta que el dgito ms significativo est delante de la coma decimal. Redondear el resultado y renormalizar la mantisa si es necesario. Corregir el exponente en funcin de los desplazamientos realizados sobre la mantisa. Detectar overflow o underflow del exponente 8
10
ulp s<1.5
Clculo exacto Clculo exacto 1.1 1 1 0 0 0*23 - 1.1 0 0 0 0 1*22 1. 0 0 1 1 1 1 *23 -0. 1 1 0 0 0 0 1 *23 1 .0 0 0 1 1 1 1 *23 Resultado 1.001000 *23 Bit de redondeo
1.0 0 1 1 1 1*23 - 1.0 0 1 0 0 1*22 1. 0 0 1 1 1 1 *23 -0. 1 0 0 1 0 0 1 *23 0 .1 0 1 0 1 0 1 *23 Resultado 1.010101 *22 Bit de guarda
11
0,5 <s 2
Clculo exacto 1.0 0 0 0 0 0*2 - 1.1 1 0 0 0 1*2-1 1. 0 0 0 0 0 0 *23 -0. 0 0 0 1 1 1 0 0 0 1 *23 0 .1 1 1 0 0 0 1 1 1 1*23 Resultado 1. 110010 *22 Bits de redondeo Resultado
3
Clculo vlido 1.0 0 0 0 0 0*23 -1. 1 1 0 0 0 1*2-1 1. 0 0 0 0 0 0 *23 - 0. 0 0 0 1 1 1 0 0 1 *23 Bit de sticky 0. 1 1 1 0 0 0 1 1 1*23 1. 110010 *22 Bit de redondeo Bit de guarda
12
13
6.- Redondear segn la tabla que vimos anteriormente. Si se produce carry-out, desplazar a la derecha y ajustar el exponente. 7.- Signo del resultado: Si (signo de a1 = signo de a2) este es el signo del resultado. Si (signo de a1 signo de a2) el signo depende de cul de los dos operandos fuera negativo, de si en el paso 1 se intercambiaron y de si en el paso 4 se reemplaz por su c2, como se muestra en la tabla. Intercambio si si no no no no C2 signo(a1) + + + signo(a2) + + + signo(resultado) + + +
no no si si
14
El proceso de multiplicacin tiene varios pasos: 1.- El signo del resultado es igual a la o-exclusiva de los signos de los operandos. 2.- La mantisa del resultado es igual al producto de las mantisas. Este producto es sin signo. Dado que los dos operandos estn comprendidos entre 1 y 2 el resultado r ser: 1 r < 4 Este paso puede requerir una normalizacin, mediante desplazamiento a la derecha y ajuste del exponente resultado. 3.- Si la mantisa resultado es del mismo tamao que la de los operandos habr que redondear. El redondeo puede implicar la necesidad de normalizacin posterior. 4.- El exponente del resultado es igual a la suma de los exponentes de los operandos. Considerando que usamos una representacin sesgada del exponente, al hacer esta suma estamos sumando dos veces el sesgo, y por tanto habr que restar este sesgo una vez para obtener el resultado correcto.
15
Como el resultado final slo se va a almacenar sobre el registro P, los bits contenidos en A nos servirn para redondear el resultado. Como el nmero est comprendido entre 1 y 3, x0 puede ser tanto 1 como 0. En cada uno de estos casos el redondeo se realiza de modo distinto: Xo=0 => Desplazar P una posicin a la izquierda, introduciendo el bit g de A como bit menos significativo de P. Los bit r y s (o-lgicade todos los s de A) nos sirven para redondear. X0=1 => La coma decimal se desplaza una posicin a la izquierda, y se ajusta el exponente sumndole 1. Poner s= (r or s) y r = g. El redondeo siempre se hace de acuerdo a la tabla vista anteriormente.
16
17
18