Sistema de ponto flutuante
Exemplo: FP(10,4,2,A) e FP(10,4,2,T) ↑ ↑ ↑ ↑ = 2 dígit 4 dígitos na mantissa base 10 A=Arredondamento T=Truncat os noexpoente ura ( , , ,_)p ( 10 , 4 , 2 , _ )
P q F
F b P
Formato normalizado – com excepção da representação do número zero, d‒1≠0 − ± − − − ± = ± × → = ± × 2 dígitos (base 10) 1 0 1 2 3 4 4 dígitos (da base
( ) 10) (0, ) 10 t t t x m b x d d d d − ≤ ≤ → ≤ < → 1 ≤ < pelo que 0,1000 m 0,9999 0,1 m 1 b m 1
Unidade de arredondamento, u
Exemplo: FP(10,4,2,T)
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na representação dum número
− × − × − = = = × t t t x x m b m b m m e x m b m − − ≤ < → 1 ≤ < → = 1 = min( ): 0,1m m 1 b m 1 min( )m b 0,1 − − −
→ max ( ) max= =max ≤ max( ) < min( ) x x m m m m e u x m m =0,1000320, = ( ) 0,1000= → − = 0,0000320 0,0001< x x fl x x x − − − < = → − < max(m m) 0,0001 10 p max(m m) b p − − − − − − − < = = 3 → < = 1 → < = 1 1 1 0,0001 10 0,001 10 10 0,1 10 p p p b p u u u b b − max(m m): =0,1000784, = ( ) 0,1000= → − = 0,0000784 0,0001< x x fl x x x =0,1000999, = ( ) 0,1000= → − = 0,0000999 0,0001< x x fl x x x
Unidade de arredondamento, u
Exemplo: FP(10,4,2,A)
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na representação dum número
− × − × − = = = × t t t x x m b m b m m e x m b m − − ≤ < → 1 ≤ < → = 1 = min( ): 0,1m m 1 b m 1 min( )m b 0,1 − − −
→ max ( ) max= =max ≤ max( ) < min( ) x x m m m m e u x m m =0,1000320, = ( ) 0,1000= → − = 0,0000320 0,0001 / 2< x x fl x x x − − − ≤ ×1 = ×1 → − ≤ ×1 max( ) 0,0001 10 max( ) 2 2 2 p p m m m m b − − − − − − − × × × < 12 = = × 3 → < 12 = × 1 → < 12 = × 1 1 1 0,0001 10 1 1 0,0005 0.5 10 10 0,1 10 2 2 p p p b p u u u b b − max(m m): =0,1000784, = ( ) 0,1001= → | − = −| | 0,0000216| 0,0001 / 2< x x fl x x x =0,1000500, = ( ) 0,1000= → − = 0,0000500 0,0001 / 2≤ x x fl x x x
Unidade de arredondamento, u
Exemplo: FP(2,24,7,T)
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na representação dum número
− × − × − = = = × t t t x x m b m b m m e x m b m − − − ≤ < → 1 ≤ < → = 1 = 1 2 min( ): (0,10...0)m m 1 b m 1 min( )m b 2 − − −
→ max ( ) max= =max ≤ max( ) < min( ) x x m m m m e u x m m ↑ ↑ ↑ ↑ − − − − = = = → − = < 24 24 2 2 2 2 2 4 24 (0,10... 0 010) , ( ) (0,10... 0 ) (0,0... 0 010) (0,000 1 ) x x fl x x x − ↑ − − − − < = 2 = → − < 2 4 2 4 max(m m) (0,00...0 1 ) 2 2 p max(m m) b p − − − − − − − − − − < 24 = 1 24 = 23 → < = 1 < = 1 1 1 1 2 2 2 2 2 2 2 p p p p b u u b u b − max(m m): ↑ ↑ ↑ ↑ − − − − = = = → − = < 24 24 2 2 2 2 2 4 24 (0,10... 0 111) , ( ) (0,10... 0 ) (0,0... 0 111) (0,000 1 ) x x fl x x x ↑ ↑ ↑ ↑ − − − − = = = → − = < 24 24 2 2 2 2 2 4 24 (0,10... 0 101) , ( ) (0,10... 0 ) (0,0... 0 101) (0,000 1 ) x x fl x x x
Unidade de arredondamento, u
Exemplo: FP(2,24,7,A)
Unidade de arredondamento, u – majorante do erro relativo (possível de ser cometido) na representação dum número
− × − × − = = = × t t t x x m b m b m m e x m b m − − − ≤ < → 1 ≤ < → = 1 = 1 2 min( ): (0,10...0)m m 1 b m 1 min( )m b 2 − − −
→ max ( ) max= =max ≤ max( ) < min( ) x x m m m m e u x m m ↑ ↑ ↑ ↑ − − − − = = = → − = < 24 24 24 2 2 4 2 2 2 (0,10... 0 010) , ( ) (0,10... 0 ) (0,0... 0 010) (0,000 1 ) / 2 x x fl x x x − − ↑ − − − ≤ × = × 24 = × → − ≤ × 2 24 1 1 1 1 max( ) (0,00...0 1 ) 2 2 max( ) 2 2 2 2 p p m m m m b − − − − − − − − − − < × 24 = × 1 24 = × 23 → < × = × 1 < × = × 1 1 1 1 1 2 1 1 1 1 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2 p p p p b u u b u b − max(m m): ↑ ↑ ↑ ↑ − − − − = = = → − = 24 24 24 2 2 2 2 24 (0,10... 0 100) , ( ) (0,10... 0 ) (0,0... 0 100) (0,000 1 ) / 2 x x fl x x x ≤ ↑ ↑ ↑ ↑ − − − − = 2 = = 2 → − = − 2 < 24 24 24 24 2 (0,10... 0 101) , ( ) (0,10... )1 | | | (0,0... 0 011) | (0,000 1 ) / 2 x x fl x x x
Exemplo 1)
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes 2) No caso de soma e subtracção, alinhamento das mantissas 3) Operações com mantissas e com expoentes
4) Normalização da mantissa 5) Arredondamento da mantissa = + → × 3 + × 1 123,4 4,321 0,1234 10 0,4321 10 y Exemplos em FP(10,4,2,T) × + × × 3 3 3 0,1234 0,004321 0,127721 10 10 10 = = × 3 ( ) 0,1277 10 fl y y
Exemplo 2)
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes 2) No caso de soma e subtracção, alinhamento das mantissas 3) Operações com mantissas e com expoentes
4) Normalização da mantissa 5) Arredondamento da mantissa = − → × 3 − × 1 427,3 2,183 0,4273 10 0,2183 10 y Exemplos em FP(10,4,2,T) × − × × 3 3 3 0,4273 0,002183 0,425117 10 10 10 = = × 3 ( ) 0,4251 10 fl y y
Nota: se não existirem dígitos de guarda × − 3 0,4273 0,00 10 2183 × × 3 3 0,4252 10 10 = = × 3 ( ) 0,4252 10 fl y y
Exemplo 3)
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes 2) No caso de soma e subtracção, alinhamento das mantissas 3) Operações com mantissas e com expoentes
4) Normalização da mantissa 5) Arredondamento da mantissa − − × = → = × = × × 1 1 3 2 3 8,475 0,8475 10 0,8475 10 5,478345 10 154,7 0,1547 10 0,1547 y Exemplos em FP(10,4,2,T) − = = × 1 ( ) 0,5478 10 fl y y
Operações elementares em ponto flutuante (FP)
Passos a seguir:
1) Decomposição dos operandos nas mantissas e expoentes 2) No caso de soma e subtracção, alinhamento das mantissas 3) Operações com mantissas e com expoentes
4) Normalização da mantissa 5) Arredondamento da mantissa
Notas:
1) Existindo dígitos de guarda, a simulação duma operação em FP corresponde a fazermos o cálculo (da operação elementar) e escrever o resultado obtido no formato em FP,
arredondando o resultado para o número de dígitos existentes na mantissa.
2) As operações com os expoentes são operações com números inteiros pelo que não introduzem aproximações (operações exactas).
3) As operações em FP, em geral, não respeitam as propriedades comutativas, distributiva e associativa da aritmética exacta.
Erros nas operações elementares em ponto flutuante (FP)
Nota: as operações com os expoentes são exactas, os erros provêm das operações com as mantissas = + → = + ⋅ = ⋅ + = = ⋅ ( ) ( ) (1 ) fl x x E fl x x x e x e E e E x e x
[
]
= + = ⋅ + + ⋅ + ⋅ + ( 1 2) 1 (1 1) 2 (1 2) (1 3) y fl x x x e x e e Soma: = + +1 2 1 1 + 2 2 + 3( 1 + 2)+ y x x e x e x e x x ϑ arredondamento do argumento arredondamento do resultado termos de ordem superior = +1 2 y x x = − = 1 1 + 2 2 + 3( 1 + 2)+ E y y e x e x e x x ϑ = E ≤2 + e e u y ϑ (x1 e x2 têm o mesmo sinal) → ≤ ⋅ + ⋅ + ⋅ + + 2 1 2 1 2 ( ) E u x u x u x x ϑ u → ≤ ⋅ + + 2 1 2 2 ( ) y E u x x ϑ uErros nas operações elementares em ponto flutuante (FP)
Nota: as operações com os expoentes são exactas, os erros provêm das operações com as mantissas = + → = + ⋅ = ⋅ + = = ⋅ ( ) ( ) (1 ) fl x x E fl x x x e x e E e E x e x
[
]
= ⋅ = ⋅ + ⋅ ⋅ + ⋅ + ( 1 2) 1 (1 1) 2 (1 2) (1 3) y fl x x x e x e e Multiplicação: = ... = ⋅ +1 2 1 1 2 + 2 1 2 + 3 1 2 + y x x e x x e x x e x x ϑ arredondamento do argumento arredondamento do resultado termos de ordem superior = ⋅1 2 y x x = − = 1 1 2 + 2 1 2 + 3 1 2 + E y y e x x e x x e x x ϑAnalogamente se conclui para a divisão: e ≤ 3u+ϑ
→ ≤ ⋅ ⋅3 1 2 + y E u x x ϑ = E ≤3 + e e u y ϑ
Erros nas operações elementares em ponto flutuante (FP)
[
]
= − = ⋅ + − ⋅ + ⋅ + ( 1 2) 1 (1 1) 2 (1 2) (1 3) y fl x x x e x e e Subtracção: = − +1 2 1 1 − 2 2 + 3( 1 − 2)+ y x x e x e x e x x ϑ arredondamento do argumento arredondamento do resultado termos de ordem superior = −1 2 y x x = − = 1 1 − 2 2 + 3( 1 − 2)+ E y y e x e x e x x ϑSe |x1‒x2| for “muito pequeno”, o erro relativo pode ser muito grande
-> cancelamento subtractivo
= x1(1+ + + −e1 e3 ϑ) x2(1+ + +e2 e3 ϑ)
erro absoluto “pequeno”
(em relação à grandeza dos argumentos) (x1 e x2 têm o mesmo sinal) → E ≤|e x1⋅ 1| |+ e x2⋅ 2| |+ e3⋅(x1 −x2)|+ϑ
(
)
→ ≤ ⋅ + + 2 1 2 2 ( ) E u x x ϑ u(
)
→ ≤ ⋅ + ⋅ + ⋅ + + 2 1 2 1 2 ( ) E u x u x u x x ϑ u + = = ≤ − − + 1 2 1 2 1 2 2 x x E E e e u y x x x x ϑErros nas operações elementares em ponto flutuante (FP)
Soma: y = +x1 x2 ≤ +ϑ 2 2 ( ) e u u (x1 e x2 têm o mesmo sinal) Multiplicação e divisão: y = ⋅x x1 2 , y = x1 / x2 e≤3u+ϑ( )u2 Subtracção: y = −x1 x2 ≤ − +ϑ + 1 2 1 2 2 | | | | 2 | | ( ) x x e x u u xProcessos que podem originar acumulação de erros
Somatório: = =
1 n i i y x ϑ + → e ≤ +(n 1)u ( )u2(xi – números positivos e negativos)
Algoritmo: Inicialização: s0=0 para i=1 até n fazer
si=si–1 +xi
fim do ciclo i
y=sn
No caso de os xi possuírem o mesmo sinal é possível estimar um majorante do erro relativo
Notar que a ordem pelo qual o cálculo é efectuado não é indiferente
Para minimizar o erro, a variável “auxiliar” si pode ser declarada com precisão acrescida. Se não ocorrer cancelamento subtractivo, o erro raramente ultrapassa uma unidade de
Processos que podem originar acumulação de erros
Produto interno (de vectores):
= = ⋅ =
⋅ 1 n i i i s x y x y ϑ + → ≤ + 2 (n 2)u ( )u e Algoritmo: Inicialização: s0=0para i=1 até n fazer
si=si–1 +xi . yi fim do ciclo i
y=sn
No caso dos termos (xi yi) possuírem o mesmo sinal é possível encontrar um majorante do erro relativo
Tal como no caso do somatório, para minimizar o erro, a variável “auxiliar” si pode ser declarada com precisão acrescida
Norma IEEE754 – formato simples
Formato simples 32 bits = 4 bytes S Expoente Mantissa
bits -> 1 8 23 Formato normalizado = − × − − × − 1 || 2 127 0 4 bits 1 23 2 ( 1)S ( , ) 2e x d d d ≤ ≤ ⇔ ≤ ≤ ⇔ − ≤ − ≤ 2 2 Expoente: (00000001) e (11111110) 1 e 254 126 e 127 1 72 − − × = × = − × × 254 127 127 23 127 128 38 2 2 Limite de overflow: (1,11 11) 2 (1,11 11) 2 (2 2 ) 2 2 3,4 10 − − − − × = × = × 1 127 126 126 38 2 2 Limite de underflow: (1,00 00) 2 (1,00 00) 2 2 1,2 10 − − − − − ↑ − × = × = × 126 23 126 149 45 2 23
Limite de underflow gradual: (0,00 0 1 ) 2 2 2 2 1,4 10
− − − −
= 1 = 1 24 = 23 × 7
Unidade de arredondamento c/ truncatura: u b p 2 2 1,2 10
− − − −
= ×1 1 = ×1 1 24 = ×1 23 × 7
Unidade de arredondamento c/ arredondamento: 2 2 0,6 10
2 2 2
p
Norma IEEE754 – formato duplo
Formato simples 64 bits = 8 bytes S Expoente Mantissa
bits -> 1 11 52 Formato normalizado ≤ ≤ ⇔ ≤ ≤ ⇔ − ≤ − ≤ 2 2 Expoente: (00000000001) e (11111111110) 1 e 2046 1022 e 1023 1023 + − + + + × = − × × 1023 52 1023 1024 308 2 Limite de overflow: (1,11 11) 2 (2 2 ) 2 2 1,8 10 − − − − × = × = × 1 1023 1022 1022 308 2 2 Limite de underflow: (1,00 00) 2 (1,00 00) 2 2 2,2 10 − − − − − ↑ − × = × = × 1022 52 1022 1074 324 2 52
Limite de underflow gradual: (0,00 0 1 ) 2 2 2 2 4,9 10
− − − −
= 1 = 1 53 = 52 × 16
Unidade de arredondamento c/ truncatura: u b p 2 2 2,2 10
− − − −
= ×1 1 = ×1 1 53 = ×1 52 × 16
Unidade de arredondamento c/ arredondamento: 2 2 1,1 10
2 2 2 p u b − − − = − × × 1023 0 1 52 1 || 3 bits 2 5 ( 1)S ( , ) 2e x d d d
Número de condição
Avaliar a propagação de erros: análise directa vs. análise indirecta
Dedução de número de condição → − − = → − − ( ) ( ) ( ) ( ) '( ) lim '( ) x x f x f x f x f x f x f x x x x x
Análise indirecta – número de condição
xx f x( )f x( ) situação 1 ( ) f x situação 2 perturbação de x situação mal condicionada situação bem condicionada
(
)
− − ( ) ( ) '( ) f x f x f x x x − ⋅ − ⋅ cond ( ) ( ) ( ) '( ) ( ) ( ) x f f e e x f x f x x f x x x f x f x xNúmero de condição
Ou seja, =cond ( )× , cond ( ) ⋅ '( ) ( )
f x
x f x
e f x e f x
f x
cond f(x) representa o factor de ampliação entre o erro relativo do argumento x e o erro do valor da função f(x)
Se cond f(x) for grande, então uma perturbação no valor do argumento x é muito ampliada
Se cond f(x) ≈ 1 (valor pequeno) – função é bem condicionada Se cond f(x) ≈ 106 (valor “grande” (?)) – função é mal condicionada
Nota 1: Se uma função for bem condicionada (num ponto), então deverá existir algoritmo que permita calcular (nesse ponto) o valor da função com precisão. Contudo, podem existir algoritmos que originem imprecisões no cálculo da função.
Número de condição
Nota 2: cond f(x) é “grande” ou “pequeno” dependendo do nosso objectivo e da incerteza dos argumentos
Considerar, por hipótese, cond ( ) 10f x = 3 → y y− ≈103× x x−
y x
a) se os erros dos argumentos forem da ordem da representação
dos números em computador (por exemplo em formato simples) − ≤ ≈ −7 10 x x u x − − − ≈ × = 3 7 4 10 10 10 y y
y erro inferior a 0,01% erro pequeno (?)(depende da aplicação) b) se os erros dos argumentos forem erros de leitura numa escala (temperatura, distância, velocidade, etc), por exemplo se os erros forem inferiores a 10–4
− −
− ≈ × =
3 4 1
10 10 10
y y