Matemática de Punto Flotante

19
Matemática de Punto Flotante

Transcript of Matemática de Punto Flotante

Page 1: Matemática de Punto Flotante

Matemática de Punto

Flotante

Page 2: 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

Page 3: Matemática de Punto Flotante

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

Page 4: Matemática de Punto Flotante

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

Page 5: Matemática de Punto Flotante

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:

Page 6: Matemática de Punto Flotante

‣ Las operaciones de suma y resta se definen de la siguiente forma.

Page 7: Matemática de Punto Flotante

‣ Y para realizar estas operaciones en representación en coma flotante deberíamos aplicar las fórmulas vistascon anterioridad

Page 8: Matemática de Punto Flotante

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

Page 9: Matemática de Punto Flotante

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 ∅

Page 10: Matemática de Punto Flotante

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

Page 11: Matemática de Punto Flotante

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

Page 12: Matemática de Punto Flotante

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

Page 13: Matemática de Punto Flotante

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

Page 14: Matemática de Punto Flotante

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

Page 15: Matemática de Punto Flotante

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

}

Page 16: Matemática de Punto Flotante

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−𝑡

Page 17: Matemática de Punto Flotante

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

Page 18: Matemática de Punto Flotante

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

Page 19: Matemática de Punto Flotante

¡Muchas Gracias

por su Atención!

CRÉDITOS:

RAMÍREZ GONZÁLEZ FERMÍN

RODRÍGUEZ CRUZ ROBERTO CARLOS

URIBE GAMIÑO AURA ELIZABETH