Universidad Politécnica de Madrid Ingeniería de Minas Programación Programación yy Métodos Métodos Numéricos Numéricos Errores Errores de de redondeo redondeo en en la la representación representación de de números números reales: reales: CODIFICACIÓN CODIFICACIÓN DE DE NÚMEROS NÚMEROS REALES REALES Carlos Conde Lázaro Arturo Hidalgo López Alfredo López Benito Departamento de Matemática Aplicada y Métodos Informáticos Febrero, 2007 63 Universidad Politécnica de Madrid Ingeniería de Minas Sistemas Sistemas de de codificación codificación binarios binarios en en coma coma flotante flotante normalizada normalizada Expresan los números en notación científica binaria pero: 1º) Asignando (t+1) bits para almacenar el exponente. 2º) Utilizando mantisas con (s+1) bits 3º) Almacenando sólo la información significativa de la mantisa La condición 1ª implica que sólo se pueden representar números no nulos cuyo valor absoluto esté comprendido entre ciertas cotas. Las condiciones 1ª y 2ª implican que: * Sólo existe un número finito de números. * Las mantisas de los números reales con más dígitos decimales deben ser aproximadas por otras con s dígitos binarios decimales. Departamento de Matemática Aplicada y Métodos Informáticos 64 Universidad Politécnica de Madrid Ingeniería de Minas Codificación Codificación del del exponente exponente en en (t+1) (t+1) bits bits Bit de signo del exponente CONVENIO: t bits para el valor absoluto del exponente 0 Æ Signo + 1 Æ Signo - Ejemplo: Con 7 bits se tienen las siguientes codificaciones de exponentes: -18 = 1 0 1 0 0 1 0 42 = 0 1 0 1 0 1 0 -67 = No puede codificarse 93 = No puede codificarse Departamento de Matemática Aplicada y Métodos Informáticos 65 Universidad Politécnica de Madrid Ingeniería de Minas Codificación Codificación del del exponente exponente en en (t+1) (t+1) bits: bits: cotas cotas Mayor exponente que puede codificarse: M = 0 1 1 1 .. .. .. 1 1 = ( 2t –1 )10 t bits Menor exponente que puede codificarse: m = 1 1 1 1 .. .. .. 1 1 = -( 2t –1 )10 t bits OBSERVACIÓN: En los sistemas reales estas cotas son “ligeramente” distintas al evitarse la duplicidad del código asignado al exponente nulo y normalizarse los exponentes. Departamento de Matemática Aplicada y Métodos Informáticos 66 Universidad Politécnica de Madrid Ingeniería de Minas Aproximación Aproximación de de números números reales reales en en base base 22 expresados expresados en en coma coma flotante flotante normalizada normalizada Técnicas de aproximación de mantisas de la forma: ±1.d1d 2 ...dsds+1 .... por mantisas con s dígitos decimales: Truncado: ±1.d1d 2 ...dsds+1 .... ≈ ±1.d1d 2 ...ds Redondeo: si ds+1 = 0 ⎧ ±1.d1d 2 ...ds ⎪ ±1.d1d 2 ...dsd s+1 .... ≈ ⎨ ⎧ ± (1.d1d 2 ...ds + ⎫ ⎪ ⎨ +0.0 0 ...1 ) ⎬ si ds+1 = 1 ⎭ ⎩⎩ “Suma binaria” NOTA: Algunos fabricantes de ordenadores incorporan también otras técnicas Departamento de Matemática Aplicada y Métodos Informáticos 67 Universidad Politécnica de Madrid Ingeniería de Minas Aproximación Aproximación de de números números reales reales en en base base 22 expresados expresados en en coma coma flotante flotante normalizada normalizada Redondeo a mantisas con 6 dígitos binarios decimales: 0 0 0 0 11 1. 0 1 1 0 1 1 + 0. 0 0 0 0 0 1 z = 1.0110111010.... 7º Dígito decimal 1. 0 1 1 1 0 0 . z = 1.1111111010.... 2e 7º Dígito decimal = z* 1 1 1 1 1 11 1. 1 1 1 1 1 1 .2e + 0. 0 0 0 0 0 1 .2e Ajuste de exponentes: 1 0. 0 0 0 0 0 0 .2e 1. 0 0 0 0 0 0 .2e+1 = z* Departamento de Matemática Aplicada y Métodos Informáticos 68 Universidad Politécnica de Madrid Ingeniería de Minas Codificación Codificación de de las las mantisas mantisas Los (s+1) bits disponibles para almacenar la mantisa se destinan a: • El primero para almacenar el signo (un 0 si es positivo y un 1 si es negativo). • Los s bits siguientes para almacenar los s primeros dígitos binarios decimales de la mantisa. El dígito entero de la mantisa no se almacena pues siempre es 1 (salvo para el número 0., que tiene una codificación especial). Departamento de Matemática Aplicada y Métodos Informáticos 69 Universidad Politécnica de Madrid Ingeniería de Minas Codificación Codificación de de las las mantisas: mantisas: ejemplo ejemplo Sistema con t = 7 bits para el exponente y s = 13 bits para mantisa (-13457.258)10 = -11010010010001.01000... ≡ −1.101001001000101000...i213 Exponente: +1101 Mantisa: - 1.101001001000101000... (redondeo) 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 Departamento de Matemática Aplicada y Métodos Informáticos 70 Universidad Politécnica de Madrid Ingeniería de Minas Los Los números números máquina máquina binarios binarios El conjunto de todos los números expresados en base 2 que expresados en coma flotante tienen mantisas formadas por s dígitos decimales y exponentes acotados por entre los valores enteros m y M se denomina conjunto de números máquina del sistema: Inicial de Float F((s+1), m, M, 2) Bits de la mantisa Base de numeración utilizada Menor exponente permitido Mayor exponente permitido Departamento de Matemática Aplicada y Métodos Informáticos 71 Universidad Politécnica de Madrid { Ejemplo Ejemplo Ingeniería de Minas F(3, -2, 2, 2) ≡ 0, ± 1.00i2−2 , ± 1.01i2−2 , ± 1.10i2−2 , ± 1.11i2−2 , ±1.00i2−1 , ± 1.01i2−1 , ± 1.10i2−1 , ± 1.11i2−1 , ± 1.00i20 , ± 1.01i20 , ± 1.10i20 , ± 1.11i20 , ±1.00i21 , ± 1.01i 21 , ± 1.10i 21 , ± 1.11i21 , ± 1.00i22 , ± 1.01i22 , ± 1.10i22 , ± 1.11i22 ≡ { 0, } + 2-2 , +(2-2 + 2-4) , +(2-2 + 2-3) , +(2-2 + 2-3 + 2-4) , + 2-1 , +(2-1 + 2-3) , +(2-1 + 2-2) , +(2-1 + 2-2 + 2-3) , En base 10 + 20 , +(20 + 2-2) , +(20 + 2-1) , +(20 + 2-1 + 2-2) , + 21 , +(21 + 2-1) , +(21 + 20) , +(21 + 20 + 2-1) , + 22 , +(22 + 20) , +(22 + 21) , +(22 + 21 + 20) } Departamento de Matemática Aplicada y Métodos Informáticos 72 Universidad Politécnica de Madrid Ingeniería de Minas Ejemplo Ejemplo (cont.) (cont.) F(3, -2, 2, 2) ≡ { 0., +0.25 , +0.3125 , +0.375 , +0.4375, +0.5, + 0.625, + 0.75, + 0.875, +1.0, +1.25, +1.5, +1.75, + 2.0, +2.5, +3.0, +3.5, + 4.0, +5.0, +6.0, +7.0 } Sólo hay N = 41 números. El mayor de ellos es C = 7. El positivo menor no nulo es c =0.25. No todos los números consecutivos distan lo mismo. Departamento de Matemática Aplicada y Métodos Informáticos 73 Universidad Politécnica de Madrid Ingeniería de Minas Distribución Distribución de de los los números números de de F(s+1, F(s+1, m, m, M, M, 2) 2) Los números máquina de mayor valor absoluto son más distantes entre sí Departamento de Matemática Aplicada y Métodos Informáticos 74 Universidad Politécnica de Madrid Ingeniería de Minas Distribución Distribución del del conjunto conjunto F(s+1, F(s+1, m, m, M, M, 2) 2) *) Número de números máquina de F(s+1, m, M, 2): N = 2(s+1) i(M − m + 1) + 1 *) Mayor número máquina de F(s+1, m, M, 2): C = (2(s+1) − 1)i2M −s *) Menor número máquina positivo de F(s+1, m, M, 2): c = 2m *) Siendo e el exponente de un número máquina positivo de F(s+1,m,M,2), la distancia entre él y el siguiente e− s en valor absoluto es: d = 2 (Igual para negativos sustituyendo “siguiente” por “anterior”.) Departamento de Matemática Aplicada y Métodos Informáticos 75 Universidad Politécnica de Madrid Ingeniería de Minas Propiedades Propiedades de de la la aproximación aproximación de de números números reales reales por por números números máquina máquina de de F(s+1, F(s+1, m, m, M, M, 2) 2) mediante mediante truncado truncado Sean: z = ±1.d1d 2 ...dsds+1 ...i2e z* = ±1.d1d 2 ...ds i2e (número que se aproxima) (número máquina de F(s+1, m, M, 2) obtenido aproximando z por truncado) Se verifica: Δ z = z − z * ≤ 2e − s z − z* Ez = ≤ 2− s z ∀z ≠ 0 Departamento de Matemática Aplicada y Métodos Informáticos 76 Universidad Politécnica de Madrid Ingeniería de Minas Propiedades Propiedades de de la la aproximación aproximación de de números números reales reales por por números números máquina máquina de de F(s+1, F(s+1, m, m, M, M, 2) 2) mediante mediante redondeo redondeo Sean: z = ±1.d1d 2 ...dsds+1 ...i2e (número que se aproxima) z* = ±1.d'1 d'2 ...d's i2e' (número máquina de F(s+1, m, M, 2) obtenido aproximando z por redondeo) Se verifica: Δ z = z − z * ≤ 2e−s−1 Ez = z − z* ≤ 2− s−1 z ∀z ≠ 0 Departamento de Matemática Aplicada y Métodos Informáticos 77 Universidad Politécnica de Madrid Ingeniería de Minas La La unidad unidad de de redondeo redondeo de de F(s+1, F(s+1, m, m, M, M, 2) 2) De las propiedades anteriores se tiene que: ∀z ≠ 0 : ⎧ 2− s aproximando por truncado z − z* ≤ u = ⎨ − s −1 Ez = z aproximando por redondeo ⎩2 UNIDAD DE REDONDEO DE F(s+1, m, M, 2) Propiedad. ∀z ≠ 0 sea δ z = z * −z ⇔ z* = (1 + δ z )iz z Se verifica que: δ z ≤ u Departamento de Matemática Aplicada y Métodos Informáticos 78 Universidad Politécnica de Madrid Ingeniería de Minas Overflow Overflow yy underflow underflow en en F(s+1, F(s+1, m, m, M, M, 2) 2) NO pueden aproximarse por un número máquina del sistema F(s+1, m, M, 2): * Los números reales con valor absoluto superior o igual a: ⎧ 2 M +1 (truncando) N OVERFLOW = ⎨ s+ 2 M − s −1 − i (2 1) 2 (redondeando) ⎩ * Los números reales no nulos con valor absoluto inferior a: n UNDERFLOW ⎧ 2m = ⎨ s+ 2 m −s − 2 (2 1) 2 i − ⎩ (truncando) (redondeando ) Departamento de Matemática Aplicada y Métodos Informáticos 79 Universidad Politécnica de Madrid Ingeniería de Minas Overflow Overflow yy underflow underflow en en F(s+1, F(s+1, m, m, M, M, 2) 2) (cont.) (cont.) Sólo pueden aproximarse por números máquina no nulos del sistema F(s+1, m, M, 2) aquellos números reales z para los que se verifique: n UNDERFLOW ≤ z < N OVERFLOW Si z ≥ N OVERFLOW ERROR DE OVERFLOW Si z < n UNDERFLOW ERROR DE UNDERFLOW ASIMILACIÓN A 0. Departamento de Matemática Aplicada y Métodos Informáticos 80 Universidad Politécnica de Madrid Ingeniería de Minas Ejemplo Ejemplo 1º 1º Exponente: 8 bits (uno para el signo) Mantisa: 24 bits (uno para el signo) • Mayor exponente: + (1·26 + 1·25 + 1·24 + 1·23 + 1·22 + 1·21 + 1·20) = 127 • Menor exponente: -127 • Número de números máquina: 224(127 – (-127) + 1) + 1 = 4278190081 • Mayor número máquina: (224-1)·2127-23 = 2128 - 2104≈ 3·1038 • Menor número máquina positivo: 2-127 ≈ 5·10-39 • Unidad de redondeo: Truncando Redondeando u = 2-23 ≈ 1·10-7 u = 2-24 ≈ 1·10-8 Departamento de Matemática Aplicada y Métodos Informáticos 81 Universidad Politécnica de Madrid Ingeniería de Minas Ejemplo Ejemplo 2º 2º Exponente: 11 bits (uno para el signo) Mantisa: 53 bits (uno para el signo) • Mayor exponente: + (1·29 + 1·28 + ...... + 1·22 + 1·21 + 1·20) = 1023 • Menor exponente: -1023 • Número de números máquina: 253(1023 – (-1023) + 1) + 1 = 18437736874454810625 ≈ 18.5·1018 • Mayor número máquina: (253-1)·21023-52 = 21024 - 2971≈ 1·10308 • Menor número máquina positivo: 2-1023 ≈ 1·10-308 • Unidad de redondeo: Truncando Redondeando u = 2-52 ≈ 2.1·10-16 u = 2-53 ≈ 1.1·10-16 Departamento de Matemática Aplicada y Métodos Informáticos 82 Universidad Politécnica de Madrid Ingeniería de Minas Departamento de Matemática Aplicada y Métodos Informáticos 83