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
Top Related