View
71
Download
1
Category
Preview:
Citation preview
Matemática de Punto
Flotante
Estándar IEEE 754
En 1985, el IEEE (Institute of Electrical and Electronics
Engineers) publicó la norma IEEE 754.
Una especificación relativa a la precisión y formato de los
números de "punto flotante". Incluye una lista de las
operaciones que pueden realizarse con dichos números.
La adopción de este estándar se debe a que el hardware que
los sustenta también lo sigue.
Ampliamente usado en las operaciones computacionales de
punto flotante, y es utilizada por muchas de las
implementaciones de CPU y FPUi
Representación del punto flotante
El Estándar utiliza tres formatos: Precisión Simple, Doble, y Extendida
Cuádruple Precisión, no es contemplado en el estándar.
En todos los casos se utilizan tres campos para describir el número: El signo S, el exponente k
y la mantisa n, que se almacenan en ese orden en memoria (no en los registros del procesador)
Precisión Bytes Bits
Simple 4 32
Double 8 64
Extendida >=10 >=80
Cuádruple 16 128
Representación del punto flotante
El signo S, se almacena como es usual en un bit (0 significa positivo, 1 negativo).
El exponente k se almacena en forma de un número binario con signo según una regla
que, como veremos a continuación, depende del rango y del formato.
La mantisa n se almacena en forma normalizada, salvo cuando se representan
mantisas especiales.
El esquema de la distribución utilizada para los de simple y doble precisión es el
indicado.
Simple precisión:
Doble precisión:
mm mmmmmmmmmmmmmmmmmmmEEEEEEEEs
mmmmmmmmmmmmmmmmmmmmmmm……..………mmmmmmmEEEEEEEEEEEs
Operaciones con punto flotante y
Algoritmos de operaciones
Cuando sumamos o restamos dos números en coma flotante se deben comparar los
exponentes y hacerlos iguales, para lo cual hay que desplazar o alinear uno de ellos
respecto al otro.
Dados dos números en representación en coma flotante como:
‣ Las operaciones de suma y resta se definen de la siguiente forma.
‣ Y para realizar estas operaciones en representación en coma flotante deberíamos aplicar las fórmulas vistascon anterioridad
La multiplicación y la división en punto flotante son más sencillas de realizar. Vemos la formula que nospermitirá realizar estas operaciones manualmente
X * Y (𝑚𝑥 * 𝑚𝑦 ) 2𝑥𝑒+𝑦𝑒
X ÷ Y (𝑚𝑥 * 𝑚𝑦 ) 2𝑥𝑒−𝑦𝑒
Operaciones con punto flotante y
Algoritmos de operaciones
Verificaciones
Verificación Texto XD-Argumentos-Letanías Resultado
𝑁𝛼𝑁 Si alguno de los argumentos es NaN (Q o S) 𝑁𝛼𝑁
∅ ∅ Si ambos argumentos son ∅ 𝑄𝑁𝛼𝑁
∞ ∞ Si ambos argumentos son ∞ 𝑄𝑁𝛼𝑁
∞ 𝑥 Si el dividendo es ∞ ∞
𝑥 ∞ Si el divisor es ∞ ∅
𝑥 ∅ Si el divisor es ∅ ∞
∅ 𝑥 Si el dividendo es ∅ y el divisor cualquier número ∅
Propagación del Error
Operaciones simples pueden incrementar el error del resultado
La multiplicación y la división son operaciones “seguras”
La suma y la resta presentan serios problemas
Los números más pequeños se pierden cuando se implican números demagnitudes abismales
Pérdida Inevitable: Benigna o Catastrófica
Iteraciones con problemas de pérdida
Un método de cálculo puede ser estable o inestable
0.0000000000000000000100034500021
0.00000000333000004500000000000004
0.00002234512124400333000004500000043254237553469900000487687698765
0.0000000000000000000000000000000000000000000000000000000000000000000000000000000005
Errores
De redondeo
Desbordamiento y Subdesbordamiento
Cuando se representan cantidades fuera del rango permisible,Desbordamiento: cantidades muy grandes;Subdesbordamiento: cantidades muy pequeñas
De Cuantificación
Errores ocasionados por la aproximación
Corte y Redondeo
Tipos de Punto Flotante
Decimal de Precisión Limitada
‣ Lo mismo que IEEE 754
‣ El exponente se interpreta enbase 10
‣ No hay errores de redondeoinesperados
‣ Compacto y rápido
‣ Más lento que los formatosbinarios
Decimal de Precisión Arbitraria
‣ Bignum
‣ Incrementa la longitud de lamantisa y el exponente
‣ Costo en memoria y velocidad
Cálculo Simbólico
‣ Programa que conozca todas lasreglas matemáticas
‣ Representación de datos comosímbolos
‣ Complejos
‣ Lentos
‣ Conocimientos matemáticossignificativos
‣ Inapropiados para tareas diariasen programación
Errores de Redondeo
Denominadores Grandes
‣ Cuanto mayor es el denominadorde una fracción, más dígitos senecesitan
Dígitos Periódicos
‣ Fracciones con denominadoresprimos que no estén en la base
Números Irracionales
‣ No se pueden representar comouna fracción regular
Métodos de Redondeo
Redondeo hacia el cero
‣ Se omiten los dígitos sobrantes
‣ Método más sencillo
‣ Provoca más error del necesario
Redondeo al Alza
‣ Si la fracción truncada es ≥ que lamitad de la base se incrementa enuno
Redondeo mitad al par
‣ Si la fracción truncada es mayorque la mitad de la base seincrementa el último dígito
‣ Si es igual a la mitad de la base seincrementa sólo si el resultado espar
‣ Método por defecto de IEEE 754
Comparación
La mayoría de los números punto flotante terminan siendo ligeramente imprecisos
Si la imprecisión es pequeña, puede ignorarse
Sin embargo, números que se esperan iguales pueden al final no serlo
float a = 0.15 + 0.15;
float b = 0.1 + 0.3;
if (a==b){
System.out.println(“A y B son iguales”); //Quiza sea falso
}
else
{
System.out.println(“A y B no son iguales”); //Probablemente sea correcto
}
Solución para Comparación
Margen de Error
if (Math.abs(a-b)<0.00001){}
Forma negativa de hacerlo
Las diferencias pueden ser muy grandes paranúmeros muy pequeños o muy pequeñaspara números muy grandes
if (Math.abs((a-b)/b)<0.00001){}
Falla en:
Cuando tanto a como b son cero es NaN
Cuando sólo b es cero el cociente retorna ∞ oes mayor que épsilon
Devuelve falso cuando a y b son muypequeños (+ y -).
Resultado no conmutativo
𝜀 = 𝑏1−𝑡
Solución para
Comparación public static boolean nearlyEqual(float a, float b, float
epsilon)
{
final float absA = Math.abs(a);
final float absB = Math.abs(b);
final float diff = Math.abs(a - b);
if (a == b) { // Atajo, maneja los infinitos
return true;
} else if (a * b == 0) { /* a o b o ambos son cero
El error relativo no es importante aquí*/
return diff < (epsilon * epsilon);
} else { // Usar el error relativo
return diff / (absA + absB) < epsilon;
}
}
‣ Crear Método
‣ Pasa las pruebas paramuchos casos especialesimportantes
‣ En algunas situacionespuede fallar
‣ Comportamientoinapropiado para algunasaplicaciones
Bibliografía
‣ Métodos Numéricos para Ingenieros 5nta Edición
‣ http://support.microsoft.com/kb/78113/es
‣ http://support.microsoft.com/kb/42980/es
‣ http://protoncompiler.blogspot.mx/2010/09/matematica-de-punto-flotante.html
‣ http://www.infor.uva.es/~fernando/asignaturas/estruct/leccion7
‣ http://www.edudevices.com.ar/download/articulos/buceando/BC_MCU_42_ED.pdf
¡Muchas Gracias
por su Atención!
CRÉDITOS:
RAMÍREZ GONZÁLEZ FERMÍN
RODRÍGUEZ CRUZ ROBERTO CARLOS
URIBE GAMIÑO AURA ELIZABETH
Recommended