La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Www.microse.cic.ipn.mx Arquitecturas de Computadoras Capitulo 2 Aritmética de Punto Flotante.

Presentaciones similares


Presentación del tema: "Www.microse.cic.ipn.mx Arquitecturas de Computadoras Capitulo 2 Aritmética de Punto Flotante."— Transcripción de la presentación:

1 www.microse.cic.ipn.mx Arquitecturas de Computadoras Capitulo 2 Aritmética de Punto Flotante

2 www.microse.cic.ipn.mx Aritmética de Punto Flotante  Acertijos de operaciones con punto flotante Para cada una de las siguientes expresiones en C:  Discuta si es verdad para todos los valores de los argumentos  Explique por qué no es verdad ¡Asuma que ni d o f son NaN! x == (int)(float) x x == (int)(double) x f == (float)(double) f d == (float) d f == -(-f); 2/3 == 2/3.0 d < 0.0   ((d*2) < 0.0) d > f   -f > -d d * d >= 0.0 (d+f)-d == f int x = …; float f = …; double d = …;

3 www.microse.cic.ipn.mx Cita del día “95% of the folks out there are completely clueless about floating-point.” James Gosling Sun Fellow Java Inventor 1998-02-28

4 www.microse.cic.ipn.mx Punto Flotante IEEE  Estándar IEEE 754 Establecido en 1985 como un estándar uniforme para aritmética de punto flotante  había diferentes formatos (código incompatible) Es soportado por todos los CPU’s grandes  Maneja diferentes aspectos numéricos Establece un estándar para realizar redondeo, desbordamiento y subdesbordamiento Es difícil de que a nivel hardware se realice el procesamiento más rápido

5 www.microse.cic.ipn.mx Creador del estándar IEEE Standard 754 for Binary Floating-Point Arithmetic. www.cs.berkeley.edu/~wkahan/ …/ieee754status/754story.html Prof. Kahan 1989 ACM Turing Award Winner! de punto flotante

6 www.microse.cic.ipn.mx Representación de fracciones Representación Los bits a la derecha del “punto binario” representan fracciones de potencia a la -2 Se representa el número racional de la sumatoria (arriba) bibi b i–1 b2b2 b1b1 b0b0 b –1 b –2 b –3 b–jb–j. 1 2 4 2 i–1 2i2i 1/2 1/4 1/8 2–j2–j

7 www.microse.cic.ipn.mx Ejemplos de fracciones  ValorRepresentación 5-3/4101.11 2 2-7/810.111 2 63/640.111111 2  Observaciones Se puede dividir entre 2 con corrimiento a la derecha Se puede multiplicar por 2 con corrimiento a l izquierda Números de la forma 0.111111… 2, es decir menores a 1.0 se pueden representar como:  1/2 + 1/4 + 1/8 + … + 1/2 i + …  1.0  Se recomienda utilizar la notación científica 1.0 - 

8 www.microse.cic.ipn.mx Números representables  Limitaciones Se pueden representar números solo de la forma x/2 k Algunos números tienen una representación repetida de bits ValorRepresentación 1/30.0101010101[01]… 2 1/50.001100110011[0011]… 2 1/100.0001100110011[0011]… 2

9 www.microse.cic.ipn.mx Representación de números  Forma numérica  -1 s M 2 E El bit de signo s determina si el número es positivo o negativo La fracción o mantisa M representa el valor de una fracción en el rango [1.0, 2.0) El exponente E pondera el valor por uno o por dos.  Codificación El bit de signo s es el bit más significativo El campo exp codifica E El campo frac codifica M sexpfrac Punto Flotante

10 www.microse.cic.ipn.mx Punto flotante  Codificación El bit de signo es el bit más significativo El campo exp codifica E El campo frac codifica M  Tamaños Precisión sencilla: se utilizan 8 bits para exp y 23 bits para frac  Se tiene un total de 32 bits Doble precisión: se utilizan 11 bits para exp y 52 bits para frac  Se tiene un total de 64 bits Precisión extendida: se utilizan 15 bits para exp y 63 bits para frac  Se tiene un total de 80 bits (sólo lo utilizan CPU’s de Intel y se desperdicia 1 bit) sexpfrac Precisión

11 www.microse.cic.ipn.mx Numeros normalizados Condición  exp  000…0 y exp  111…1  El exponente se codifica como un número polarizado E = Exp – Polarización  Exp: valor sin signo que se denoa por exp  Polarización: Valor que polariza Precisión sencilla: 127 (Exp: 1…254, E: -126…127) Doble precisión: 1023 (Exp: 1…2046, E: -1022…1023) En general: Polarización = 2 e-1, donde e es el número de bits del exponente. Codificación significativa con el valor de 1 implícito  M = 1.xxx…x 2 Es mínimo cuando 000…0 (M = 1.0) Es máximo cuando 111…1 (M = 2.0 -  ) Se tiene un bit más significativo extra que está “libre”

12 www.microse.cic.ipn.mx Ejemplos  Valor float F = 15213.0; 15213 10 = 11101101101101 2 = 1.1101101101101 2 X 2 13  Significado M = 1.1101101101101 2 frac= 11011011011010000000000 2  Exponente E = 13 Polarización = 127 Exp = 140 = 10001100 2 Representación de punto flotante: Hex: 4 6 6 D B 4 0 0 Binario: 0100 0110 0110 1101 1011 0100 0000 0000 Exponente:140  100 0110 0 15213: 1110 1101 1011 01 Codificación normalizada

13 www.microse.cic.ipn.mx Numeros des-normalizados Condición exp = 000…0  Valor Valor exponencial E = -Polarización+1 Valor mantiza M = 0.xxx…x 2  xxx…x: bits de frac  Casos exp = 000…0, fracción = 000…0  Representa el valor 0  Hay que notar que puede tener valores distintos +0 y -0  exp = 000…0, fracc  000…0  Número muy cercanos a 0.0  Se pierde precisión al ser un número más pequeño  “Se llega a un subdesbordamiento”

14 www.microse.cic.ipn.mx Numeros especiales Condición Exp = 111…1  Casos Exp = 111…1, frac = 000…0  Representa un valor  (infinito)  Estas operaciones causan sobreflujo  Ambos valores pueden ser números positivos y negativos  E.g. 1.0/0.0 = -1.0/0.0 = + , 1.0/-0.0 = -   Exp = 111…1, frac  000…0 Not-a-Number (NaN) Representan casos cuando valores numéricos pueden ser indeterminados por ejemplo sqrt(-1),  - 

15 www.microse.cic.ipn.mx Resumen de Codificación NaN ++  00 +Desnorm+Normalizado -Desnorm -Normalizado +0 Numeros de punto flotante

16 www.microse.cic.ipn.mx Formato pequeño  Representación de punto flotante con 8 bits El bit de signo es el bit más significativo Los siguientes 4 bits son para el exponente, con un valor de polarización de 7 Los últimos 3 bits representan la fracción  Es lo mismo que el formato general IEEE Normalizado y desnormalizado Se representan el 0, NaN e infinito sexpfrac 0 2367 de punto flotante

17 www.microse.cic.ipn.mx Valores des-normalizados Exp d Exp b E2 E 00000-6 1/64 (Des-normalizado, E = 0 y Frac != 0) 10001-61/64 20010-51/32 30011-41/16 40100-31/8 50101-21/4 60110-11/2 70111 01 (Normalizado, E != 0 y Frac != 0) 81000+12 91001+24 101010+38 111011+416 121100+532 131101+664 141110+7128 151111n/a (inf, NaN) (Exp = 1111, Frac != 0) relacionados al exponente sExpFrac 0 2367

18 www.microse.cic.ipn.mx Rango dinámico S Exp Frac EValor 0 0000 000-60 0 0000 001-61/8*1/2 6 = 1/512 0 0000 010-61/4*1/64= 2/512 … 0 0000 110-66/8*1/64= 6/512 0 0000 111-67/8*1/64= 7/512 0 0001 000-68/8*1/64= 8/512 0 0001 001 -69/8*1/64= 9/512 … 0 0110 110-114/8*1/2= 14/16 0 0110 111-115/8*1/2= 15/16 0 0111 000 0 8/8*1= 1 0 0111 001 0 9/8*1= 9/8 0 0111 010 010/8*1= 10/8 … 0 1110 110714/8*128= 224 0 1110 111715/8*128= 240 0 1111 000 n/ainf  Cercano a cero  El mayor desnorm.  El mas pequeño norm.  Por abajo de 1  Por arriba de 1  El mayor norm. Numeros De-normalizados Numeros Normalizados W=8 bits

19 www.microse.cic.ipn.mx Distribución de valores ( 6 bits)  Punto flotante de 6 bits, igual que el formato IEEE  e = 3 bits del exponente  f = 2 bits de la fracción  Polarización igual a 3  Hay que notar que la distribución se vuelve más densa conforme se aproxima al cero -15-10-5051015 DesnormalizadoNormalizadoInfinito

20 www.microse.cic.ipn.mx (un acercamiento)  Punto flotante de 6 bits, igual que el formato IEEE  e = 3 bits del exponente  f = 2 bits de la fracción  Polarización igual a 3 -0.500.51 DesnormalizadoNormalizadoInfinito Distribución de valores ( 6 bits)

21 www.microse.cic.ipn.mx Números interesantes Descripción Exp(8) Fracc(23) Valor Numérico  Cero 00…00 00…00 0.0  Positivo más Pequeño Desnorm. 00…00 00…01 2 – {23,52} X 2 – {126,1022} Sencillo  1.4 X 10 –45 Doble  4.9 X 10 –324  Más Grande Desnorm. 00…00 11…11 (1.0 –  ) X 2 – {126,1022} Sencillo  1.18 X 10 –38 Doble  2.2 X 10 –308  Positivo más Pequeño Norm. 00…01 00…00 1.0 X 2 – {126,1022} Exactamente el número mayor desnormalizado  Uno 01…11 00…00 1.0  Más Grande Norm. 11…10 11…11 (2.0 –  ) X 2 {127,1023} Sencillo  3.4 X 1038 Doble  1.8 X 10308

22 www.microse.cic.ipn.mx Propiedades especiales  El cero en punto flotante es como en enteros el cero Todos los bits = 0  Puede (casi) utilizar una comparación de enteros sin signo Se debe primero comparar bits de signo Se debe considerar -0 = 0 Los NaNs son problemáticos  Será el mayor que otros valores  ¿A qué podrían llegar estas comparaciones? De otra manera O. K.  Desnormalizado vs. Normalizado  Normalizado vs. infinito

23 www.microse.cic.ipn.mx 23 Redondeo Cualquier numero x de punto flotante IEEE pueden escribirse de la forma ±(b 0. b 1 b 2 b 3 …b p-1 ) 2 X 2 E Con b 0 =0 y E max > E > E min Decimos que el número real x esta en el intervalo normalizado del sistema de punto flotante si: N min ≤ x ≤ N max De lo contrario ocurre que x está fueradel intervalo normalizado La expansión binaria de x requiere de mas de p-bits para especificar exactamente el número. La precisión p de punto flotante es demasiado pequeña para representar x exactamente.

24 www.microse.cic.ipn.mx 24 Redondeo Definimos x - ≤ x ≤ x + Sea x en el intervalo normalizado y escrito en la forma normalizada: x =(b 0. b 1 b 2 b 3 … b p-1 b p b p+1 ) 2 X 2 E El número mas cercano menor o igual a x es: x - =(b 0. b 1 b 2 b 3 … b p-1 ) 2 X 2 E Mientras que el número mayor a x es: x + =(b 0. b 1 b 2 b 3 … b p-1 ) 2 X 2 E +(0.000…01) Puede generar acarreos Puede necesitar ajuste de exponente

25 www.microse.cic.ipn.mx 25 Redondeo Valores correctamente redondeados Redondeo hacia abajo:round(x) = x - Redondeo hacia arriba:round(x) = x + Redondeo hacia cero:round(x) = x - si x ≥ 0 ó x + si x ≤ 0 Redondeo al justo mas cercano:

26 www.microse.cic.ipn.mx Operaciones de punto flotante Vista conceptual Primero debe calcular resultados exactos Después se debe ajustar a una precisión deseada  Posiblemente se puede tener sobreflujo si el exponente es muy largo  Posiblemente redondee para ajustar en la fracción  Ejemplos de modos de redondeo (se ilustra el redondeo con el símbolo $) –a la unidad) 1.4 1.6 1.5 2.5 -1.5 Cero$1$1$1$2-$1 Redondeo hacía abajo (- )$1$1$1$2-$2 Redondeo hacía arriba(+ )$1$2$2$3-$2 El justo más cercano $1 $2 $2 $3 -$2 (por default) Nota: 1. Redondeo hacía abajo: los resultados del redondeo es cercano pero no es mayor que el verdadero resultado. 2. Redondeo hacía arriba: el resultado del redondeo es cercano pero no menor que el verdadero resultado

27 www.microse.cic.ipn.mx Detalle al justo más cercano  Es el método de redondeo por default Es difícil tener algún otro tipo sin que se utilice ensamblador El resto de los métodos son polarizados estáticamente con 60  La suma de todo el conjunto de números positivos será consistentemente sobre o bajo estimadas  Aplicando las otras posiciones para decimales/bits Cuando se está exactamente a la mitad del camino entre dos posibles valores  Se redondeo de manera que el dígito más significativo es justo  E.g., redondear a la centésima más cercana 1.23499991.23(menor que la mitad del camino) 1.23500011.24(mayor que la mitad del camino) 1.23500001.24(mitad del camino-redondeo arriba) 1.24500001.25(mitad del camino-redondeo arriba)

28 www.microse.cic.ipn.mx Redondeando números binarios  Números de fracciones binarias  “Justo” cuando el bit menos significativo es 0 A la mitad del camino cuando los bits de la derecha de la posición de redondeo = 100… 2 Ejemplos ValorBinarioRedondeoAcciónValor 2 3/3210.00011 2 10.00 2 (<1/2-abajo) 2 2 3/16 10.00110 2 10.01 2 (>1/2-arriba) 2 1/4 2 7/8 10.11100 2 11.00 2 (1/2-arriba)3 2 5/8 10.10100 2 10.10 2 (1/2-abajo) 2 1/2 El bit menos significativo es 0

29 www.microse.cic.ipn.mx Repaso: convertir números  Caso sencillo: Si el denominador es un exponente 2 (e.g. 2, 4, 8, 16, etc.) entonces es fácil realizar la conversión:  Represente el valor -0.75 en punto flotante -0.75 = -3/4 -11 2 /100 2 = -0.11 2 Normalizando -1.1 2  2 -1 (-1) s  (1 + fracción)  2 (127+Exp) (-1) s  (1 +.1000000 … 0000)  2 (126) 1 0111 1110 100 0000 0000 0000 0000 0000 decimales a punto flotante Ejemplo 1

30 www.microse.cic.ipn.mx  Representar 1/3 en el formato de punto flotante 1/3 = 0.33333… 10 = 0.25 + 0.0625 + 0.015625 + 0.00390625 + … = 1/4 + 1/16 + 1/64 + 1/256 + … = 2 -2 + 2 -4 + 2 -6 + 2 -8 + … = 0.0101010101… 2  2 0 = 1.0101010101… 2  2 -2 Signo: 0 Exponente = -2 + 127 = 125 = 01111101 Fracción = 0101010101… Ejemplo 2 0 0111 1101 0101 0101 0101

31 www.microse.cic.ipn.mx Otra posibilidad  1/3 = 0.33333… 10 0.33333…  2 = 0.66666…  0 0.66666…  2 = 1.33333…  1 0.33333…  2 = 0.66666…  0 0.66666…  2 = 1.33333…  1 0.33333…  2 = 0.66666…  0 0.66666…  2 = 1.33333…  1 … De manera que 1/3 10 = 0.010101[01] 2 Ejemplo 2

32 www.microse.cic.ipn.mx  Convertir -2.340625  10 1 a punto flotante 1. Desnormalizar: -23.40625 2. Convertir la parte entera: 23 = 16 + (7 = 4 + (3 = 2 + (1))) = 10111 2 3. Convertir la parte de la fracción:.40625 =.25 + (.15625 =.125 + (.03125)) =.01101 2 4. Juntar las dos partes y normalizar: 10111.01101 = 1.011101101  2 4 5. Convertir el exponente: 127 + 4 = 10000011 2 Ejemplo 3 1 1000 0011 0011 1011 0100 0000 0000 0000

33 www.microse.cic.ipn.mx a. 23/2 = 11.5  1 11/2 = 5.5  1 5/2 = 2.5  1 2/2 = 1  0 1/2 = 0.5  1 De manera que 23 10 = 10111 2 b. 0.40625  2 = 0.8125  0 0.8125  2 = 1.625  1 0.625  2 = 1.25  1 0.25  2 = 0.5  0 0.5  2 = 1.0  1 De manera que 0.40625 10 = 0.01101 2 Ejemplo 3

34 www.microse.cic.ipn.mx Punto flotante a decimal  Cuál es el equivalente decimal de: s exponente fracción (-1) s  (1 + fracción)  2 (Exponente-127) (-1) 1  (1 +.111)  2 (129-127) = -1  (1.111)  2 (2) = -111.1 2 = -7.5 10 1 1000 0001 111 0000 0000 0000 0000 0000

35 www.microse.cic.ipn.mx Suma en punto flotante  Operandos (-1) s1 M1 2 E1 (-1) s2 M2 2 E2  Hay que asumir que E1 > E2  Resultado exacto (-1) s M 2 E Signo s, mantisa M:  Resultado de signo alineado y sumar Exponente E: E1  Fijar Si M  2, recorrer M a la derecha, incrementar E Si M < 1, recorrer M a la izquierda k posiciones, decrementar E por k Sobreflujo si E está fuera de rango Redondear M para definir la precisión de frac (–1) s1 M1 (–1) s2 M2 E1–E2 + (–1) s M

36 www.microse.cic.ipn.mx Numeros de punto flotante 1. Compara los exponentes de los dos números. Realizar un corrimiento a la derecha del número más pequeño hasta que su exponente se empate con el exponente del número más grande; 2. Sumar las mantisas; 3. Normalizar la suma, ya sea que se realice corrimiento hacía la derecha y se incremente el exponente, o se realice corrimiento a la izquierda y se decrementa el exponente; if (ocurrió desbordamiento) { break arrojar una excepción; } else { 4. Redondear la mantisa a un número apropiado de bits; } if (ya se encuentra normalizada la suma) { stop algoritmo; } else { goto paso 3; } Algoritmo de la suma

37 www.microse.cic.ipn.mx Sumar 0.5 10 más -0.4375 10 en binario utilizando el algoritmo de la suma en punto flotante. Primero hay que convertir los números a binario en una notación científica normalizada, asumiendo que se mantiene una precisión de 4 bits. 0.5 10 = 1/2 10 = 1/2 1 10 = 1.000 10  2 -1 = 0.1 2 = 0.1 2  2 0 = 1.000 2  2 -1 -0.4375 10 = -7/16 10 = -7/2 4 10 = -0.0111 2 = -0.0111 2  2 0 = -1.110 2  2 -2 Ahora continuamos con el algoritmo. punto flotante Algoritmo de la suma

38 www.microse.cic.ipn.mx  Paso 1. La mantisa del número con el menor de los exponentes, i.e. - 1.110 2  2 -2 se recorre a la derecha hasta que el exponente se empate con el número más grande: -1.110 2  2 -2 = -0.111 2  2 -1  Paso 2. Se suman las mantisas de los dos números 1.000 2  2 -1 + (-0.111 2  2 -1 ) = 0.001 2  2 -1 Puede utilizarse complemento a 2 para mejor visualización!!! punto flotante Algoritmo de la suma

39 www.microse.cic.ipn.mx  Paso 3. Se normaliza la suma, verificando si hay desbordamiento o subdesbordamiento: 0.001 2  2 -1 = 0.010 2  2 -2 = 0.100 2  2 -3 = 1.000 2  2 -4 Debido a que 127  -4  -126, no existe ni desbordamiento ni subdesbordamiento. (El exponente polarizado podría ser -4 + 127 o 123, que es un valor que se encuentra entre 1 y 254, que son los exponentes polarizados más pequeño y más grande) Punto Flotante Algoritmo de la suma

40 www.microse.cic.ipn.mx  Paso 4. Redondear de la suma: 1.000 2  2 -4 La suma ya se encuentra representada por 4 bits, de manera que no hay necesidad de cambiar los bits debido al redondeo La suma es entonces: 1.000 2  2 -4 = 0.0001000 2 = 0.0001 2 = 1/2 4 10 = 1/16 10 = 0.0625 10 Que es el resultado que esperábamos de 0.5 10 + (-0.4375 10 )= 0.0625 10 Algoritmo de la suma Punto Flotante

41 www.microse.cic.ipn.mx Propiedades de la suma  Comparar con los de un grupo Abeliano ¿Es cerrado bajo la suma?Si  Pero puede crear infinitos o NaN ¿Es conmutativo?Si ¿Es asociativo?No  Debido al sobreflujo y al redondeo ¿Es 0 la identidad aditiva?Si ¿Cada elemento tiene su inverso aditivo?Casi  Excepto para infinito y NaN  Monotonicidad ¿Es a  b  a + c  b + c?Casi  Excepto para infinito y NaNs Los grupos abelianos son así llamados en honor al matemático noruego Niels Henrik Abel. Los grupos que no son conmutativos se denominan no abelianos (también no conmutativos, con menos frecuencia). Punto Flotante

42 www.microse.cic.ipn.mx Sumador de Punto Flotante Algoritmo de la suma

43 www.microse.cic.ipn.mx Multiplicación  Operandos (-1) s1 M1 2 E1  (-1) s2 M2 2 E2  Resultado exacto (-1) s M 2 E  Signo s: s1^s2  Fracción o mantisa M: M1  M2  Exponente E: E1 + E2  Ajuste Si M  2, se recorre M a la derecha, sobreflujo Si E está fuera de rango hay sobreflujo Se redondea M para ajustar la precisión de la fracción  Implementación La multiplicación de significantes ocupa la mayor área Punto Flotante

44 www.microse.cic.ipn.mx Algoritmo de la multiplicación 1. Sumar los exponentes polarizados de los dos números, restar la polarización de la suma para obtener el nuevo exponente polarizado; 2. Multiplicar las mantisas; 3. Normalizar el producto obtenido si es necesario, haciendo un corrimiento a la derecha e incrementando el exponente; if (ocurrió desbordamiento) { break arrojar una excepción; } else { 4. Redondear la mantisa a un número apropiado de bits; } if (ya se encuentra normalizado el producto) { 5. if (signo de los operandos son iguales) { signo del producto es positivo; } else { signo del producto es negativo; stop algoritmo; } else { goto paso 3; } Punto Flotante

45 www.microse.cic.ipn.mx Ejemplo de multiplicación (1/4) Multiplicar los números 0.5 10 por -0.4375 10 0.5 10 = 1/2 10 = 1/2 1 10 = 1.000 10  2 -1 = 0.1 2 = 0.1 2  2 0 = 1.000 2  2 -1 -0.4375 10 = -7/16 10 = -7/2 4 10 = -0.0111 2 = -0.0111 2  2 0 = -1.110 2  2 -2  Paso 1. Sumar los exponentes sin polarización: -1 + (-2) = -3 o, utilizando la representación polarizada: (-1 + 127) + (-2 + 127) – 127 = (-1 - 2) + (127 + 127 – 127) = -3 + 127 = 124 Punto Flotante

46 www.microse.cic.ipn.mx Ejemplo de multiplicación (2/4)  Paso 2. Multiplicar las mantisas: 1.000 2  1.110 2 0000 1000 1110000 2 El producto es 1.110000 2  2 -3, pero se necesita mantener los 4 bits, de manera que el resultado es 1.110 2  2 -3 Punto Flotante +

47 www.microse.cic.ipn.mx Ejemplo de multiplicación (3/4)  Paso 3. Ahora se verifica que el producto este normalizado, y entonces se verifica si el exponente estará con desbordamiento o subdesbordamiento. Para este ejemplo el producto ya está normalizado y, debido a que 127  -3  -126, no existe desbordamiento o subdesbordamiento.  Paso 4. Al momento de redonder el producto no existen cambios: 1.110 2  2 -3 Punto Flotante

48 www.microse.cic.ipn.mx Ejemplo de multiplicación (4/4)  Paso 5. Debido a que loe signos de los operandos son diferentes, el signo del producto es negativo. Así, el producto es: -1.110 2  2 -3 Se convierte ahora el resultado a decimal: -1.110 2  2 -3 = -0.001110 2 = 0.00111 2 = -7/2 5 10 = -7/32 10 = -0.21875 10 De manera que 0.5 10  -0.4375 10 = -0.21875 10 Punto Flotante

49 www.microse.cic.ipn.mx Propiedades de multiplicación  Comparación con anillo conmutativo ¿Es cerrado bajo la multiplicación?Si  Pero puede generar inifinito o NaN ¿Es la multiplicación conmutativa?Si ¿Es la multiplicación asociativo?No  Posiblemente se puede generar sobreflujo, y es inexacto ante el redondeo ¿Es 1 la identidad multiplicativa?Si ¿Es la multiplicación distributiva sobre la adición?No  Posiblemente se puede generar sobreflujo, y es inexacto ante el redondeo  Monotonicidad ¿Es a  b & c  0  a  c  b  c?  Excepto para infinito y NaN Punto Flotante

50 www.microse.cic.ipn.mx Lenguage C  C garantiza dos niveles floatprecisión simple doubledoble precisión  Conversiones Los cambios entre int, float y double cambia los valores numéricos Double o float a int  Trunca la parte de la fracción  Igual que el redondeo hacia cero No está definido cuando está fuera de rango  Generalmente satura a TMin o Tmax int a double  Conversión exacta, mientras que int tenga un tamaño de palabra menor o igual a 53 bits int a float  Se redondea de acuerdo al modo de redondeo Punto Flotante

51 www.microse.cic.ipn.mx Solución al acertijo int x = …; float f = …; double d = …; Hay que asumir que d o f es NaN x == (int)(float) x No: 24 bit de mantisa x == (int)(double) x Si: 53 bit mantisa f == (float)(double) f Si: se incrementa precisión d == (float) d No: se pierde precisión f == -(-f); Si: Sólo cambia el bit de signo 2/3 == 2/3.0 No: 2/3 == 0 d < 0.0 ((d*2) < 0.0) ¡Si! d > f -f > -d ¡Si! d * d >= 0.0 ¡Si! (d+f)-d == f No: No es asociativa Punto Flotante

52 www.microse.cic.ipn.mx Ariane 5 4 de junio de 1996  Explotó a los 37 segundos después de despegar  Se perdieron $500 millones DLS  ¿Por qué? Se calculó la velocidad horizontal como número de punto flotante de 64 bits. Este fue convertido a un entero de 16 bits. EL numero fue mayor que 32,767 Funcionó muy bien para el Ariane 4 Hubo un sobreflujo para el Ariane 5  Se utilizó el mismo software, pero diferente procesador Punto Flotante

53 www.microse.cic.ipn.mx Resumen  El formato IEEE de punto flotante tiene propiedades matemáticas claras Representa números de la forma M  2 E Se puede razonar acerca de operaciones independientes de la implementación  Como si se calculara con precisión perfecta y entonces se redondea No es lo mismo que la aritmética real  Se viola la asociatividad y la distributividad  Hace la vida difícil a los compiladores y las aplicaciones de programadores serios Punto Flotante


Descargar ppt "Www.microse.cic.ipn.mx Arquitecturas de Computadoras Capitulo 2 Aritmética de Punto Flotante."

Presentaciones similares


Anuncios Google