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

Post on 30-Oct-2018

218 views 0 download

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

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

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

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

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

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

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), . . .

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

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

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

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

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

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

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

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

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

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

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

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)

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

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), . . .

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

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

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

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

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.

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

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, ...

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

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

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

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)

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]

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

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]

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]

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

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

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

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

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

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!

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)

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

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

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

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!

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

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

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

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

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)

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

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)

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)

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

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

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

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

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

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

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

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

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

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)

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.

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

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

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)

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

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

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

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

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

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

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 ))

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

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

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

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

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