Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores...

80
La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de er Estimación de Errores en Aplicaciones Numéricamente Intensivas e Implementación de Funciones Elementales de Dos Variables Javier Díaz Bruguera Departmento de Electrónica y Computación Universidad de Santiago de Compostela Universidad Complutense de Madrid. Junio 2012

Transcript of Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores...

Page 1: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estimación de Errores en AplicacionesNuméricamente Intensivas e Implementaciónde Funciones Elementales de Dos Variables

Javier Díaz Bruguera

Departmento de Electrónica y ComputaciónUniversidad de Santiago de Compostela

Universidad Complutense de Madrid. Junio 2012

Page 2: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Índice

1 La aritmética en los procesadores actuales

2 La representación punto flotante

3 Algunas operaciones punto flotante

4 Estimación de errores en aplicaciones punto flotante

5 Implementación de funciones de dos variables

Page 3: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Índice

1 La aritmética en los procesadores actuales

2 La representación punto flotante

3 Algunas operaciones punto flotante

4 Estimación de errores en aplicaciones punto flotante

5 Implementación de funciones de dos variables

Page 4: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Procesadores de Propósito General

Procesadores SuperescalaresProcesamiento simultáneo de varias instruccionesBúsqueda/decodificación de varias instrucciones por cicloDesacoplamiento de la emisión y el chequeo dedependencias

Ejecución determinada por la dependencia entreinstruccionesEjecución fuera de ordenPlanificación de instrucciones

Un gran número de instrucciones en el procesador

Número elevado de unidades funcionalesUnidades de punto fijo: Operaciones sobre enteros,cálculo de direccionesUnidades de punto flotante: operaciones sobre reales

Page 5: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Los números y su representación

Representación punto fijo: números enterosRango dinámico limitadoOverflows y underflows frecuentesNo es posible representar números muy grandes o muypequeños

32 bits⇒ [−2−16,216 − 1]

Representación punto flotante: números realesMayor rango dinámico

32 bits⇒ [−2−126,2127]Como en punto fijo, ¡solo podemos representar 232

números!

Adecuado para aplicaciones científicas y de ingeniería

Page 6: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Operadores punto flotante

OperacionesBásicas: suma/resta y multiplicaciónIterativas: recíproco/división, inverso raíz cuadrada/raízcuadradaNuevas operaciones: A + B × C

punto fijo: MAC (Multiply–and–ACcumulate)punto flotante: MAF (Multiply–Add–Fused), FMA(Fused–Multiply–Add)

Otras operaciones: ex , 2x , log2(x), ln(x), sin(x), cos(x),tan(x), . . .

Page 7: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Índice

1 La aritmética en los procesadores actuales

2 La representación punto flotante

3 Algunas operaciones punto flotante

4 Estimación de errores en aplicaciones punto flotante

5 Implementación de funciones de dos variables

Page 8: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Representación en punto flotante

Representación estándar de números realesElevado rango dinámicoNúmero finito de bits: Representación de un conjunto finitodel conjunto infinito de números reales

Número real representable exactamente en punto flotante:Número punto flotanteResto de número reales: Aproximados por un númeropunto flotante (Redondeo)

Produce un error de redondeo

f1 f2x

Page 9: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Representación en punto flotante

FormatoTres componentes: signo, exponente y significando

x = (−1)Sx ×Mx × 2Ex

Significando: 1 bit entero, Mx = 1.Fx , 1 ≤ Mx < 2

x = (−1)Sx × 1.Fx × 2Ex

NormalizadoBit entero: Hidden bit, no se representa

Exponente: Bias: B = 2e−1 − 1, e num. bits exponenteE = exponente + BE ≥ 0

Page 10: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Representación en punto flotante

Rango del significando y ulp

f bits fraccionales

M = 1 +f∑

i=1

di × 2−i

1 ≤ M ≤ 2− 2−f

ulp (unit in the last place): La diferencia entre dos valoresconsecutivos del significando

ulp = 2−f

Page 11: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Representación en punto flotante

Representación normalizada y no normalizadaNormalización:

elimina la redundancia en la representación y mejora laexactitud al eliminar los ceros más significativosreduce el rango : Mmin = 1 ⇒ xmin = 1× 2Emin

Se admiten significandos no normalizados solo con elexponente mínimo: Números Denormales

al disminuir la magnitud, incluyen ceros en la parte mássignificativa

0

normalizados normalizados

denormalizados

−infinito +infinito

Page 12: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estándar IEEE 754 – 1985

ParámetrosPrecisión simple (32 bits): S(1), E(8), F(23). Bias = +127Doble precisión (64 bits): S(1), E(11), F(52). Bias = +1023Precisiones extendidas (Bias sin especificar):

Simple extendida (≤ 43): S(1), E(≤ 11), F(≤ 32)Doble extendida (≤ 79): S(1), E(≤ 15), F(≤ 64)

Valores especiales

Cero: E = 0, F = 0⇒ 1,0× 2−B no se representaDenormales: E = 0, F 6= 0⇒ (−1)S × 0.F × 2−(B−1), nonormalizadosNot–a–number (NAN): E = 2B + 1 (max. expon.), F 6= 0Infinito (pos. y neg.): E = 2B + 1 (max. expon.), F = 0

Page 13: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Operaciones con resultado redondeadoAritméticas: suma, resta, multiplicación, división y cálculodel resto

r = x REM y ⇒ r = x − y × n

con y 6= 0, y n el entero más próximo al valor exacto x/yRaíz cuadradaConversiones de formato

Page 14: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estándar IEEE 754 – 2008

Principales característicasFormatos

BásicosTres formatos binarios: 32, 64, 128 bitsDos formatos decimales: 64 y 128 bits

Extendidos: extienden la precisión y el rango de losformatos básicosDe intercambio entre implementaciones

Operaciones con redondeo: más que el estándarIEEE754-1985

Page 15: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estándar IEEE 754 – 2008

Formatos básicos

Formatos binarios Formatos decimales

Parámetro binary32 binary64 binary128 decimal64 decimal128

p, dígitos 24 53 113 16 34emax 127 1023 16383 384 6144

Page 16: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estándar IEEE 754 – 2008

Parámetros del formato de intercambio binario

Parámetro binary16 binary32 binary64 binary128 binary(k) k ≥ 128

No bits 16 32 64 128 múltiplo de 32precisión 11 24 53 113 k − round(4× log2(k)) + 13

signif. 10 23 52 112 k − round(4× log2(k)) + 13emax 15 127 1023 16383 2k−p−1 − 1

exponente 5 8 11 15 round(4× log2(k)) + 12

Ejemplo: binary256⇒ precision=237, emax=262143

Page 17: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estándar IEEE 754 – 2008

Operaciones con resultado redondeadoSuma, resta, multiplicación, división, raíz cuadradaFused Multiply Add: fma(x , y , x) = (x × y) + zConversiones de formato

Page 18: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estándar IEEE 754 – 2008

Operaciones con recomendación de resultado redondeado

Tipo Función

Exponenciales ex , ex − 1, 2x , 2x − 1, 10x , 10x − 1Logaritmos loge(x), log2(x), log10(x), loge(1 + x), log2(1 + x), log10(1 + x)

Raíces√

x2 + y2, 1/√

x , x1/n

Potencias xn, xy , (1 + x)n

Trigonométricas sin(x), cos(x), tan(x), sin(π × x), cos(π × x)atan(x), asin(x), acos(x), atan(x)/π

Hiperbólicas sinh(x), cosh(x), tanh(x), asinh(x), acosh(x), atanh(x)

Page 19: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Índice

1 La aritmética en los procesadores actuales

2 La representación punto flotante

3 Algunas operaciones punto flotante

4 Estimación de errores en aplicaciones punto flotante

5 Implementación de funciones de dos variables

Page 20: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algunas operaciones punto flotante

OperacionesBásicas: suma/resta y multiplicación

Nueva operación: A + B × CMAF (Multiply–Add–Fused), FMA (Fused–Multiply–Add)

Iterativas: recíproco/división, inverso raíz cuadrada/raízcuadradaOtras operaciones: ex , 2x , log2(x), ln(x), sin(x), cos(x),tan(x), . . .

Page 21: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Suma punto flotante (z = x + y )

Algoritmo básico

1 Restar exponentes. d = Ex − Ey

2 Alinear significandos

Desplazar operando con menorexponenteExponente resultado

3 Sumar (restar) significandos

Operación efectiva

4 Normalización del resultado

Suma: desplaz. dcha.Resta: desplaz. izqd.Ajustar exponente

5 Redondeo: Suma

alineam.

x: 1.0001110011

y: 0.0011001010

resta

z: 0.1110101000

normaliz.

z: 1.1101010000

redondeo

z: 1.1101010001

x: 1.0001110011

exp=−20

exp=−20

exp=−20

exp=−21

exp=−23

exp=−20

exp=−21

101

011

110

y: 1.1001010101

Page 22: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Suma punto flotante: implementación

Algoritmo básico

1 Diferencia de exponentese intercambio

2 Alineamiento3 Suma signo–magnitud de

significandos4 Normalización: LOD para

determinar la posición del1 más significativo

5 Redondeo. Puedeproducir overflow

Page 23: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Suma punto flotante: Implementación mejorada

Algoritmo mejorado

1 Suma complemento a 22 LOP (Leading-one predic.). En

paralelo con la suma

3 Doble vía de datos

CLOSE: Restas con diferenciade exponentes 0, 1

Alineamiento de 1 bitNormalización masiva

FAR: Restas con diferencia deexponentes mayor que 1 ysumas

Alineamiento masivoNormalización de 1 bit

4 Combinacion de suma y redondeo

SHIFTRIGHT

1 bit shiftnormalization

bit inverter

1 bit shift1 bit shift

control

add/sub.sign Bsign A control

shift

bit inverter

COMPOUND

ADDER

COMPOUND

ADDER

NORMAL.

bit inverter

M U X

0 1 10MUX MUX

SIGNIF.EXP.SSIGNIF.EXP.S

exponentdifference

sign ofexp. diff.

alignment

LOP

FAR CLOSE

Page 24: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Multiplicación punto flotante (z = x × y )

Algoritmo básico

1 Mz = Mx ×My ,Ez = Ex + Ey

2 Normalización de Mz

3 Actualizar exponente4 Redondeo. Puede

producir overflow

z: 1.1100001011 0000011111 exp=−43

multiplicacion y exponente

x: 1.0001110011

exp=−23

exp=−20

y: 1.1001010101

normaliz.

redondeo

z: 1.1100001011 0000011111 exp=−43

z: 1.1100001011 exp=−43

Page 25: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Multiplicación punto flotante: implementación

Algoritmo básico

1 Multiplicación designificandos (2m bits)

2 Suma exponentes (conbias)

3 Signo del resultado4 Normalización

(Mz ∈ [1, 4]). Desp. 1 bit5 Redondeo.

Page 26: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Multiplicación punto flotante: Implementaciónmejorada

Algoritmo mejorado

1 Cálculo de los m + 1 bits mássignificativos del resultado

RepresentaciónCarry-SaveConversión de los m + 1bits más signif.Resto de bits: sticky ycarry

2 Combinación de suma,normalización y redondeo

Page 27: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

MAF punto flotante

MAF: Multiply-Add FusedOperación: z = x × y + w

Incluye suma (y = 1) y multiplicación (w = 0)Ventajas:

Reduce el número de componentes (sumadores,desplazadores, ...) e interconexionesMejora la exactitud de la operación MAF: Unanormalización/redondeo en lugar de dosAyuda al compilador a obtener código más eficiente

Desventajas:Misma latencia para multiplicación y sumaMayor número de bits en el sumadorNormalizador más complejo

Procesadores con MAF: Intel Itanium, IBM Power, ...

Page 28: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

MAF punto flotante: Estructura básica

Page 29: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

MAF punto flotante: Mejoras sobre la estructurabásica

ObjetivosReducir la complejidad hardwareReducir el retraso (ciclos)

¿Cómo?Simplificación del sumador (en la parte más significativasólo hay un operando)Doble vía de datos

Técnica que no puede ser aplicada al MAFCombinar suma y redondeo intercambiando el orden delredondeo y la normalizaciónNo se conoce en que bit hay que redondear

Page 30: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

División y raíz cuadrada punto flotante

Operación q = x/d1 Dividir significandos y restar

exponentes

Mq = Mx/Md

Eq = Ex − Ed

2 Normalizar: desplaz. 1 bit3 Redondear

Division de significandosAlgoritmos multiplicativosAlgoritmos basados enrecurrencias

Page 31: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algoritmos multiplicativos

MétodoCálculo del recíproco o inverso de la raíz cuadrada ymultiplicación adicional

q = x/d = (1/d)× x

r =√

x = (1/√

x)× x

Mejora iterativa de una aproximación inicialConvergencia cuadrática

El número de bits de la aproximación se dobla en cadaiteración

Basado en multiplicaciones y sumasReutilización del multiplicador punto flotante existenteRequiere poco hardware adicional

Redondeo: iteración extra (cálculo del resto)

Page 32: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Cálculo del recíproco: Método Newton–Raphson

Obtención del cero de una funciónValor de x tal que f (x) = 0Si x [j] es una aproximación al cero, x [j + 1] es unaproximación mejor

x [j + 1] = x [j]− f (x [j])f ′(x [j])

Aplicación al recíproco, x = 1/d

Función f (R) = 1/R − d . El cero es R = 1/dComo f ′(R) = −1/R2, se obtiene

R[j + 1] = R[j]× (2− R[j]× d)

Aproximación inicial: R[0]

Page 33: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Cálculo del recíproco: Método Newton–Raphson

Convergencia cuadrática

Si ε[j] error en la iteración j ,entonces ε[j + 1] = ε[j]2

Número de iteraciones (m)

m = dlog2(nk)e

n: precisión final,k: precisión aprox. inicialAproximación inicial críticapara la latencia del algoritmo

Page 34: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Cálculo del recíproco: Método de Goldschmidt

Multiplicaciones independientesDos recurrencias: convergen a 1 y a la función deseada

R =1d

=1d× P[0]

P[0]× P[1]

P[1]. . .× P[m]

P[m]=

R[m]

d [m]

Dos recurrencias P[j] tal que R[j]→ 1/d , d [j]→ 1:

Algoritmo (R[m] = 1/d)1 Aprox. inicial P[0], d [0] = d × P[0], R[0] = P[0]2 For j = 0 . . .m − 1 do

P[j + 1] = 2− d [j]d [j + 1] = d [j]× P[j + 1]R[j + 1] = R[j]× P[j + 1]

Page 35: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Inverso de la raíz cuadrada r = 1/√(x)

Newton-Raphson

R[j + 1] =12× R[j]× (3− R[j]2)

Goldschmidt

P[j + 1] =12× (3− d [j])

d [j + 1] = d [j]× P[j + 1]2

R[j + 1] = R[j]× P[j + 1]

Page 36: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Ejemplo de división: AMD K7 (K8, K10)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 2017

Etapa 1

Etapa 2

Etapa 3

Etapa 4

X X

X

X

X

X

X

X

X X

X X

X X

X X

X

X

X

X

Aprox. inic.

(16 bits)

iter. 1iter. 2

calc. restoy redondeo

cociente

GOLDSCHMIDT, DOBLE PRECISION

Page 37: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algoritmos Basados en Dígito–Recurrencias

CaracterísticasAlgoritmo iterativo: un dígito por iteración (dígitos radix r )Basado en la actualización de una recurrencia

División

w [j + 1] = rw [j]− dqj+1

qj+1 = SEL(rw [j],d)

Raíz cuadrada

w [j + 1] = rw [j]− 2S[j]sj+1 − s2j+1r−(j+1)

sj+1 = SEL(rw [j],S[j])

Mayor latencia que los algoritmos multiplicativosConvergencia lineal vs. cuadráticaRadix más elevado: menos iteraciones, más hardware

Page 38: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algoritmos Basados en Dígito–Recurrencias

Representación redundante

q[j] cociente después de j iteraciones:

q[j] = q[0] +j∑

i=1

qi r−i

Representación redundante: qi ∈ {−a, . . . ,0, . . .a},a ≥ dr/2e

Ejemplo (r = 4,a = 2), tres dígitos: 0,1,2,−1,−2

Representación redundante para w [j]: Selección de losdígitos con una estimación de w [j]

VentajasImplementación hardware sencilla (si radix moderado).No reutiliza las unidades del procesador

Page 39: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Evaluación de funciones

Esencial en aplicaciones numéricasLogaritmos, exponenciales, funciones trigonométricas,hiperbólicas

Cálculo:En software. Librerías con operaciones punto flotanteEn Hardware. Particular para una función o conjunto defuncionesAlgoritmos diferentes para software y hardware

Funciones aproximadas: No pueden calcularseexactamente con un número finito de operacionesSin redondeo: Es difícil obtener resultados correctamenteredondeados

Page 40: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Evaluación de funciones

MétodosTablas: valores de la función almacenados en una tabla

Precisiones bajas (≤ 12 bits)Precisiones mayores: tabla demasiado grande

Aproximación polinómica: válido para funciones contínuasOperaciones: Suma y multiplicaciónReducción del grado del polinómio: Aproximación inicial

Dígito–recurrencias: recurrencia que converge a la funciónOperaciones: Suma, multiplicación y desplazamientosLa recurrencia depende de la función

Aproximaciones racionales: Cociente de dos polinomiosDesventaja: DivisiónÚtil para funciones con un polo

Métodos válidos para rangos limitados: reducción derango del argumento

Page 41: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Aproximaciones polinómicas

Polinomios directosSeries de Taylor (u otros) truncadas

f (x) = f (x0) +∞∑i=1

f (i)(x0)

i!(x − x0)

i

Efectivos para aproximar la función en un punto

Error de aproximación elevado lejos de ese puntoEl error depende del número de términos del polinomio

Útiles para rangos pequeños (como parte de aproximación por tramoso con reducción de rango)

Ejemplo: y = sin(x/2), 0 ≤ x ≤ 1/2, con εabs < 2−32

sin(x) = x − x3

3!+

x5

5!− x7

7!+ . . .

Número de términos: 4⇒ ¡Muchas operaciones!

Page 42: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Aproximaciones polinómicas

Interpolación por tramos(piecewise interpolation)

Polinomios diferentes paratramos diferentes

Reducción del grado delpolinomio

Interpolación lineal en cadatramo (i , i + 1):

p(i)1 (x) =

Yi+1 − Yi

Xi+1 − Xi(x − Xi)

Para cada tramo se necesita:Yi , (Yi+1 − Yi)/(Xi+1 − Xi)

p (x)1i

xX Xi+1i

Yi

Yi+1f(x)

Page 43: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Aproximaciones polinómicas

Ejemplo: f (x) = x1/3, 1/2 ≤ x < 1

Cuatro intervalos: Xi = 1/2 + (1/8)i , i = 0,1,2,3

i Yi (Yi+1 − Yi)/(Xi+1 − Xi)0 0,7937 0,49041 0,8550 0,42882 0,9086 0,38243 0,9564 0,3488

Ejemplo: x = 0,788⇒ i = 2

p(x) = 0,9086 + 0,3824(0,788− 0,75) = 0,9231

Page 44: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Aproximaciones polinómicas

Implementación

Xi equiespaciados, múltiplos de 2−k

x = Xi + xr 2−k , xr entero

Xi : k bits mas significativos de x(x − Xi) resto de los bits de x

p (x)=f(x)1

LUT Mult−

Addn

Y

D n2

n1

i

iXi

x−Xi

x

Page 45: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Índice

1 La aritmética en los procesadores actuales

2 La representación punto flotante

3 Algunas operaciones punto flotante

4 Estimación de errores en aplicaciones punto flotante

5 Implementación de funciones de dos variables

Page 46: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estimación de errores en aplicaciones punto flotante

Fuente de erroresError de redondeoAcumulación de errores de redondeoAmplificación del error relativo

¡El redondeo de la representación punto flotante es elorigen de los problemas de errores en las aplicacionescientíficas!

Page 47: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Redondeo en punto flotante

Resultado de una operación punto flotante: número realRepresentación exacta: número infinito de bitsPunto flotante: f bits fraccionalesLa representación debe estar próximo al resultado exactoCondición: x ≤ y entonces round(x) ≤ round(y)

Redondeo:f1, f2 números punto flotante consecutivos, si f1 ≤ x ≤ f2entonces round(x) = f1 o f2x calculado con más bits que los utilizados pararepresentar f1 y f2

f1 f2x

Page 48: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Redondeo en punto flotante

Modos de redondeoAl más próximo - par(|x − f1(f2)| = d1(d2))

Rprox(x) =

f1 si d1 < d2f2 si d1 > d2par si d1 = d2

A cero

Rcero(x) ={

f1 si x ≥ 0f2 si x < 0

A más infinito (x ≥ 0)

R+∞(x) = f2

A menos infinito (x ≥ 0)

R−∞(x) = f1

1.00 1.111.101.01

1.001 1.011 1.101 1.1111.00 1.01 1.10 1.11

1.00 1.111.101.01

1.00 1.01 1.10 1.11

A cero

1.00 1.111.101.01

1.00 1.01 1.10 1.11

A mas infinito

Al mas proximo

1.00 1.111.101.01

1.00 1.01 1.10 1.11

A menos infinito

Page 49: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Error de redondeo (redondeo al más próximo – par)

Regiones en la representación punto flotante. Ejemplo

3 bits de significando, exponente ∈ [−2,1] (2 bits), regiónpositivaBinades con diferente densidad de puntos

10

1.111

1.110

1.101

1.100

1.011

1.010

1.001

1.000

420.50.25

E=1E=0E=−1E=−2

denormales

Page 50: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Error de redondeo (redondeo al más próximo – par)

El error depende la binadeulp (unit in the last place):diferencia entre dos valoresconsecutivos delsignificandoEl valor de la ulp dependede la binadeSignificando de n bits:1ulp = 2−n × 2Ex

Error de redondeo: 12 ulp

εabs ≤ 2−(n+1) × 2Ex

εrel ≤ 2−(n+1)

Ejemplo: n = 4

x = 1,0001 | 1100× 2−7

fp(x) = 1,0010× 2−7

x − fp(x) = 0,0000 0100× 2−7

εabs ≤ 2−4 × 2−7

εrel ≤ 2−4

Page 51: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Problemas de la representación punto flotante

No siempre se verifica la propiedad asociativa

x = −1,5× 1038, y = 1,5× 1038, z = 1,0

x + (y + z) = −1,5× 1038 + (1,5× 1038 + 1,0)= −1,5× 1038 + (1,5× 1038) = 0,0

1.5 x 1038

~ 2 127

1.0 ~ 20

alineamiento

y

z

y

z

y+z

(=y)

Page 52: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algunos ejemplos: Argumentos y/o resultadosproximos a 1

acos(x), x → 1, x = cos(θ) (SP FP)

θ = 1.00000000000000000000000× 2−5

cos(θ) = 1.11111111110000000000001× 2−1

acos(cos(θ)) = 1.11111111111111010101011× 2−6

θ = 1.00000000000000000000000× 2−50

cos(θ) = 1.00000000000000000000000× 20

acos(cos(θ)) = 0

Page 53: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algunos ejemplos: Argumentos y/o resultadosproximos a 1

ln(x), x → 1, x = 1 + 2−23 + 2−26

ln(x) = 1.11111111111111111111111× 2−24 (SP FP)ln(x) = 1.00011111111111111111111× 2−23 (Maple)

Page 54: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algunos ejemplos: Cancelaciones

1− cos(x), x → 0

x = 1.00000000000000000000000× 2−5

cos(x) = 1.11111111110000000000000× 2−1 (SP FP)1− cos(x) = 1.11111111111100000000000× 2−12 (SP FP)

1− cos(x) = 1.11111111111101010101010× 2−12 (Maple)

Page 55: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algunos ejemplos: Cancelaciones

(ex − 1)/x , |x | << 1

Algoritmo 1 Algoritmo 2

if x = 0 y = ex

f = 1 if y = 1else f = 1

f = (ex − 1)/x elseend f = (y − 1)/ ln y

end

Page 56: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Algunos ejemplos: Los errores pueden cancelarse

(ex − 1)/x , |x | << 1⇒ cancelación

x Algoritmo 1 Algoritmo 2

10−5 1,000005000006965 1,00000500001666710−6 1,000000499962184 1,00000050000016710−7 1,000000049433680 1,00000005000000210−8 0,999999993922529 1,00000000500000010−9 1,000000082740371 1,00000000050000010−10 1,000000082740371 1,00000000005000010−11 1,000000082740371 1,00000000000500010−12 1,000088900582341 1,00000000000500010−13 0,999200722162640 1,00000000000050010−14 0,999200722162640 1,00000000000005010−15 1,110223024625156 1,00000000000000510−16 0 1

Page 57: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Motivo: Incremento del error relativo en FP

EjemplosCancelaciones

Rx−y =x Rx + y Ry

|x − y |=

x (Rx + Ry )

|x − y |

Funciones con xf ′(x)/f (x) grande

Rf (x) = |xf ′(x)f (x)

| × Rx

El error relativo de los operandos se amplifica

Page 58: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estimación del error

Las operaciones FP son susceptibles de producir erroresOperaciones FP: acumulación de errores de redondeoResultados inexactos en algunos cálculos

Errores grandes solo para algunos valores de los datos,resultados exáctos en la mayoría de las ejecuciones

Existen varias alternativas para determinar el errorHardwareSoftware

Page 59: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Alternativas para la estimación del error

Métodos en hardwareAritmética de significancia

Especificación número dígitos correctos del resultadoLímite errores relativos sin signo: sobre-estimación delerror

Aritmética de intervalosAcumulación de errores máximos: intervalos muy anchos.Implementación costosa

Aritmética FP con precisiones doble-doble y quad–doble.Números como suma no evaluada de dos o cuatro DP-FPErrores de redondeo se acumulan en parte menossignificativaLento, varias operaciones para determinar los errores

Estimación del errorEstimación del error concurrentemente con la ejecución delprograma

Page 60: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Alternativas para la estimación del error

Métodos software: ejecución mucho más lenta y modificacióndel programa

Aritmética de intervalosAlgoritmos especiales para evitar intervalos demasiadoanchos

Running error: límite del error durante la ejecución de unprograma

Sobre-estimación del errorCálculo del error:

Lento. Basado en diferenciación parcial automáticaAritmética estocástica: estimación de la exactitud

el programa se ejecuta varias veces con diferentesesquemas de error de redondeo

Page 61: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estimación del error en computaciones punto–flotante

Estimación hardwareEstimación del error almacenada con cada variableEstimación del error del resultado concurrentemente conla ejecución del programa

Errores de los datos de entradaErrores de redondeo en el cáculo

CaracterísticasRedondeo al más próximo: errores con signo

Los errores pueden cancelarseEstimación de la exactitud:

Idealmente: Grande si error grande, pequeña si errorpequeñoEstimación no exacta: primera propiedad siempre, segundacasi siempreIndicación cualitativa de errores grandes

Page 62: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Implementación

Sobrecoste adicionalImplementación simple y poco efecto sobre la ejecucióndel programaAlmacenaniento necesario para la estimación del error

Registros adicionalesAlmacenanmiento en memoria adicional

Aumento de los requisitos de ancho de bandaprocesador–memoria

Tipo de errorEl más apropiado parece el error relativo, pero

Difícil de implementar (debido a algunas anomalías)Proponemos Scaled absolute error

Valor próximo al del error relativoSin sus anomalías

Page 63: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estimación del error: error absoluto escalado

Errores en cálculos FP

z = x op y . En FP: z = fp(x op y) x , y , representación FPde x and y , z redondeo de x op yError: propagado (Pz) + generado (redondeo, Gz).

Error (Pz + Gz ) Pz Gz

relative (z − z)/z (z − x op y)/z (x op y − z)/zabsolute z − z z − x op y x op y − z

scaled abs. (z − z)× 2−ez (z − x op y)× 2−ez (x op y − z)× 2−ez

Error relativo (rz): anomalíasz = 0⇒ rel error =∞,z = 0⇒ rel error = 1, independientemente de z

Error absoluto (az): No refleja la exactitud de la variableError absoluto escalado (bz): similar al error relativocuando éste es pequeño

Page 64: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Estimación del error: error absoluto escalado

Scaled absolute error (Pz + Gz )

Addition bz = (bx × 2ex + by × 2ey )2−ez + d × 2−ez

Multiplication bz = 2−ovf (mx × by + my × bx) + bx by + d × 2−ez

Division bz =my×bx−mx×by

my×(my+by )+ d × 2−ez

d es el error de redondeo absoluto (error generado), d = x op y − z

Otras operaciones: sqrt, exp, ln, ...

Operandos pequeños: derivada az = f ′(x) ∗ ax

Operandos grandes: definición az = f (x + ax)− f (x)

Page 65: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Ejemplo: Relación de áreas de dos triángulos

Cálculo FP r = area triangle(x ,y ,z)area triangle(x ,y ,2z)

Ecuación

r =

√(x + y + z)(z − (x − y))(z + (x − y))(x + (y − z))

(x + y + 2z)(2z − (x − y))(2z + (x − y))(x + (y − 2z))

Los errores de redondeo degradan la exactitud.Ejemplo: x = 1,234568× 106, y = 1,234567× 106,

z = 1,00000000023resultado exacto: r = 1,2382783744254× 10−5.SP FP: r = 0DP FP: r = 1,238278425653352× 10−5.solo 7 dígitos decimales correctos (23 bits)rel . error ≈ 2−25.

Page 66: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Ejemplo: Relación de áreas de dos triángulos

error abs. error rel.SP FP 1,1001× 2−17 1DP FP −1,0010× 2−41 −1,0110× 2−25

(a) Resultado con Maple

N = 10 N = 20 N = 23 (for SP)or 52 (for DP)

SP FP 1,1001× 2238 ∗ 1,1001× 2238 ∗ 1,1001× 2238 ∗

DP FP −1,0010× 2−24 −1,0010× 2−24 −1,0010× 2−24

(b) Estimación

intervalo escalado running-error escaladoSP FP 1,0010× 2243 ∗ 1,0111× 2253 ∗

DP FP 1,1000× 2−21 1,1110× 2−1

(c) Aritmética de intervalos y running-error

Page 67: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Exponencial (f (x) = (ex − 1)/x)

error abs. error rel.Alg. 1 1,0100× 2−17 1,0100× 2−17

Alg. 2 1,1001× 2−55 1,1001× 2−55

(a) Resultado con Maple

N = 10 N = 20 N = 52Alg. 1 1,0100× 2−17 1,0100× 2−17 1,0100× 2−16

Alg. 2 1,0101× 2−55 1,0101× 2−55 1,1001× 2−55

(b) Estimación

intervalo escalado running–error escaladoAlg. 1 1,1001× 2−15 1,1001× 2−15

Alg. 2 1,1001× 2−14 1,0011× 2−15

(c)Aritmética de intervalos y running-error

Page 68: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Ejemplo: Eliminación Gaussiana (GE)

Resolución FP de un sistema lineal de ecuaciones, A× x = bMétodo de Eliminación Gaussiana con pivoting parcial decolumnasResultados inexactos debido a la acumulación de erroresde redondeoMatriz 10× 10 y b = (1,2,3,4,5,6,7,8,9,10)

Vector resultado exacto x = (0,1,−2,3,−4,5,−6,7,−8,9)

Resultado DP FP:(9,8407492921× 10−9,0,9999999055,−1,9999994966,2,9999980387,−3,9999937636,4,9999828578,−5,9999578189,6,9999049037,−7,9998003422,8,9996049158)

Page 69: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Ejemplo: Eliminación Gaussiana (GE)

Res. Maple Maple Error absoluto escaladoexact error abs. error rel. N = 10 N = 20 N = 52

x0 0 −2−27 ∞ −29 −20 −20

x1 1 2−24 2−24 −2−17 2−23 2−23

x2 −2 −2−21 2−22 2−19 −2−21 −2−21

x3 3 2−19 2−21 2−20 2−20 2−20

x4 −4 −2−18 2−20 −2−19 −2−19 −2−19

x5 5 2−16 2−19 2−18 2−18 2−18

x6 −6 −2−15 2−18 −2−17 −2−17 −2−17

x7 7 2−14 2−17 2−16 2−16 2−16

x8 −8 −2−13 2−16 −2−15 −2−15 −2−15

x9 9 2−12 2−15 2−15 2−15 2−15

Aritmética de intervalos: El intervalo del divisor incluye el 0Running error: Error infinito

Page 70: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Índice

1 La aritmética en los procesadores actuales

2 La representación punto flotante

3 Algunas operaciones punto flotante

4 Estimación de errores en aplicaciones punto flotante

5 Implementación de funciones de dos variables

Page 71: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Implementación de funciones de dos variables

Funciones de dos variables: X p, X 1/q, logaX

Argumentos punto fijo y/o punto flotanteIncluyen un gran número de funciones útiles encomputación científica

X 1/2, X−1/2, X 1/3, X−1/3, X 2, X−2, X−1, log2X , log10X ,lnX , 2X , eX

Pueden ser parte de sistemas heterogéneosAceleradores multifunción

Computadas con rutinas softwareLentas para aplicaciones numericamente intensivas y/o entiempo real

Los métodos habituales no son generalesCálculo de la potencia o raíz con un exponente o baseparticularLogaritmos con una base particular

Page 72: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Funciones elementales en el estándar IEEE 754-2008

Funciones correctamente redondeadasPotencia

pown(X, y), X y con y entero y X un número punto flotantepowr(X, Y), X Y con Y y X ≥ 0 números punto flotantepow(X, Y), X Y con Y y X números punto flotante

Raízrootn(X, y), X 1/y con y entero y X un número puntoflotante

Page 73: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Implementación de funciones de dos variables

AlternativaAlgoritmo iterativo y arquitectura para el cálculo de lafunción X Y

Y punto fijo: Y = p, Y = 1/q, con p y q enterosY punto flotante: potencia si exponente positivo, raíz sinegativo

Secuencia de operaciones solapadas: logaritmo,multiplicación y exponencial

Cambios mínimos para permitir el cálculo independientedel logaritmo y la exponencial

Page 74: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Arquitectura top level

E x

xM

E x

zrecoding

to SD

calculation

for exponential

X1/y

1/YX

X ,y

X ,Y

2z

capital lettermeans afloating−pointvalue

E xlog M * 22 x

x2log M ,

M y

E y

y−(E +1)

mux

pow/root

selectionexponent

selectionoperation

reciprocal

mux

concat.

architecture

Basic powering

mux

fplog/fxlog

y

0

fx/fppow/fproot

Page 75: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Exponente punto fijo

AlgoritmoBasado en la identidad,

X Y = 2log2(XY ) = 2Y log2(X)

Como X es punto flotante,

X Y = 2Y log2(Mx×2Ex ) = 2Y×(log2 Mx+Ex )

Operaciones: logaritmo, concatenación, multiplicación,exponencialProblema: el argumento de la exponencial está fuera delrango (−1,1)

Separar parte entera y fraccional => exponente y mantisadel resultado punto flotante

X Y = 2int(Y×(log2 Mx+Ex )) × 2frac(Y×(log2 Mx+Ex ))

Page 76: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Exponente punto fijo

Implementación

X Y = 2int(Y×(log2 Mx+Ex )) × 2frac(Y×(log2 Mx+Ex ))

El argumento de la exponencial en (−1,1)El número de bits enteros es diferente para Y = p oY = 1/qOperaciones:

High–radix digit–recurrence logarithmLeft–to–right carry–free multiplicationOn–line high–radix exponential

Análisis detallado de la precisión y la exactitud (accuracy )para obtener el número de etapas (latencia) de cadaoperación

Page 77: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Exponente punto fijo

Ejemplo: Precisión simple (o binary32), radix r = 128 (r = 27),exponente de 8 bits

log2 Mx log2 Mx

Ex = S0

Mx

MultMult Mult Mult

S3S1 S4

Exp

T3

T1 (=0 in case of q-th root)

T4 T6T5

T2 T3+T4

y

2frac(T)

int(T)

Mult

Rec

Mult

frac(T)

0

Mx

Z

S5S2

Digit-Recurrence Logarithm

Left-to-Right Carry Free Multiplication

(LRCF Mult)

On-Line Exponential

log2 Mx log2 Mx log2 Mx

Exp Exp Expδ =2

Page 78: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Exponente punto flotante

Operaciones (X Y )La operación depende también del signo del exponente deY

X Y =

{potencia si Ey ≥ 0 (|Y | ≥ 1)raíz si Ey < 0 (|Y | < 1)

X 1/Y =

{raíz si Ey ≥ 0 (|Y | ≥ 1)potencia si Ey < 0 (|Y | < 1)

Algoritmo

|X |Y = 2(−1)sy×My×(Ex+log2 Mx )×2Ey

|X |1/Y = 2(−1)sy×(2/My )(Ex×log2 Mx )×2−(Ey+1)

Se ha normalizado 1/My para usar el mismo multiplicador

Page 79: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Exponente punto flotante

Diferencias con exponente punto fijo

|X |Y = 2(−1)sy×My×(Ex+log2 Mx )×2Ey

|X |1/Y = 2(−1)sy×(2/My )(Ex×log2 Mx )×2−(Ey+1)

Menos dígitos en la parte enteraRecíproco de alta precisiónDesplazamiento 2Ey o 2−(Ey+1)

Derecha /izquierdaDesplaza un operando redundante y MSDFLimita el rango de valores útiles de Y

−(nEx + nm) ≤ Ey ≤ n + nEx − 2 potencia−(n + nEx − 1) ≤ Ey ≤ nEx + nm + 1 raíz

Page 80: Estimación de Errores en Aplicaciones Numéricamente ... · La aritmética en los procesadores actualesLa representación punto flotanteAlgunas operaciones punto flotanteEstimación

La aritmética en los procesadores actuales La representación punto flotante Algunas operaciones punto flotante Estimación de errores en aplicaciones punto flotante Implementación de funciones de dos variables

Exponente punto flotante

Ejemplo: Precisión simple (o binary32), radix r = 128 (r = 27)

Range Reduction

Mx

Ex

EyOverflow checking

I1

Ex L1 L3L2 L4 L6L5

S3S2 S4 S5

Exp

T2

T1

T4 T6T5

T2+T3

2frac(T)

int(T)

S1

T3

S0

T0overflow checking

Exp Exp Exp

MultMultMultMult

ShifterShifterShifterShifterShifterShifter

MultMult

log2 Mxlog2 Mxlog2 Mxlog2 Mxlog2 Mxlog2 Mx

Rec

R2 R3 R4 R5 R60 0

My

R1

RecRecRecRecRec

In radix-r

(in radix-r)

In binary

K, KEx

Mult

Shifter

S6

log2 Mx

L7

δ =2

δm=1

On-line Multiplication

Digit-Recurrence Logarithm

Digit Shifting

Digit-Recurrence Reciprocal

On-Line Exponential