Representação e Aritmética em Ponto Flutuante 35T12 – Sala 3G4 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227 Sistemas de Representação de Números no Computador Representação de números inteiros Dado um número inteiro n≠0, ele possui uma única representação na base n=∓ n−k n−k 1 n−1 n0 =∓ n0 0 n1 1 n−k k onde os são inteiros satisfazendo ni ,i=0,−1,−k 0ni e n−k ≠0 Por exemplo, 712 é representado por 712=2×100 1×101 7×102 =71210 ou 2 712=1×2 90×281×27 1×26 0×25 0×2 4 3 2 1 0 1×2 0×2 0×2 0×2 =10110010002 DIM0404 Representação de Números Reais Representação em ponto fixo: representação usada por muitos computadores nas décadas de 60 e 70 Dado um número real x≠0, ele pode ser n representado por x=∓∑ x −i , onde kn e 0 x i=k i i Exemplo: 1997.16 na base =10 2 1997.16=∓ ∑ x i −i i =−3 3 2 1 0 =1×10 9×10 9×10 7×10 1×10 6×10 3 DIM0404 −1 −2 Representação em Ponto Flutuante 4 Mais flexível que a representação em ponto fixo Padrão nos dispositivos atuais (IEEE 754) Dado um número real x≠0, ele pode ser representado por onde é a base do x=∓d×e , sistema de numeração, d é a mantissa e e é o n expoente e d é um número em ponto fixo d=∓∑ d i −i , i=k onde geralmente k=1, e se x≠0, então d1≠0; 0≤ di < , i=1,2,...,t, sendo t a quantidade de dígitos significativos ou precisão do sistema, e ≤ d < 1 e ­m ≤ e ≤ M DIM0404 Representação em Ponto Flutuante 5 D1≠0 caracteriza o sistema de números em ponto flutuante como normalizado O número 0 pertence a qualquer sistema e pode ser representado com mantissa igual a 0 e e= ­m Exemplos: 0.35, ­5.172, 0.0123, 5391.3, 0.0003 DIM0404 Representação em Ponto Flutuante Sistema de representação de números em ponto flutuante normalizados F , t , m , M , com onde d 1 ≠0 e −meM ±0.d1 d 2 d t ×e , Exemplos: 0.35, ­5.172, 0.0123, 5391.3, 0.0003 Represente os números acima usando o sistema F 10,3 ,2 ,2 6 DIM0404 Mudança de Base 7 Máquinas ou humanos podem usar bases diferentes para representar o mesmo número Mudar as representações dos números 1.101 e 0.110 da base 2 para a base 10 13, 0.75 e 3.8 da base 10 para a base 2 53.7 da base 10 para a base 2 110.10 da base 2 para a base 10 Mudanças de bases diferentes de 10 podem ser feitas usando­se a base 10 como uma base intermediária DIM0404 Representação de Números no Sistema F , t , m , M 8 Números reais podem ser representados por uma reta contínua. Um sistema de números de ponto flutuante representa pontos discretos na reta real Quantos e quais números podem ser representados no sistema F(2,3,1,2)? DIM0404 Representação de Números Exemplos Somente pontos discretos na reta de números reais podem ser representados no computador 9 DIM0404 Padrão IEEE 754 10 Criado em 1985, se tornou um padrão para aritmética de ponto flutuante Implementado na grande maioria das CPUs Padrões para arredondamento, underflow e overflow Somente números na forma x/2k podem ser representados exatamente. Outros números têm representações com repetições de seqüências de bits, como 1/3 0.0101010101[01]…2 1/5 0.001100110011[0011]…2 DIM0404 Padrão IEEE 754 s 11 Números representados por ­1sM2E, onde s (MSB) é o bit do sinal, M (frac) é um valor fracional na faixa [1.0,2.0) e E (exp) é o expoente da base 2 exp frac Precisões Simples (8 exp bits, 23 frac bits) Dupla (11 exp bits, 52 frac bits) Estendida (15 exp bits, 63 frac bits) DIM0404 Codificação no Padrão IEEE 754 exp 000…0 and exp 111…1 Expoente é codificado com um bias Exp: valor sem sinal do campo exp Bias: valor do bias • Precisão simples: 127 (Exp:1...254, E:­126...127) • Precisão dupla: 1023 (Exp:1...2046, E:­1022...1023) Frac codificado com um 1 inicial implícito M=1.xxx...x 2 12 • xxx...x: bits de frac • Mínimo quando frac é 000...0 (M=1.0) e máximo quando frac é 111...1 (M=2.0­) DIM0404 Padrão IEEE 754 – Codificação Normalizada exp ≠ 00...0 and exp ≠ 11...1 Float F = 15213.0; 1421310 = 111011011011012 = 1.11011011011012 X 213 M=1.11011011011012 , Frac=1110110110110100000000002 Expoente: E = 13, bias = 127, exp = 140 = 100001100 Floating Point Representation (Class 02): Hex: Binary: 4 6 6 D B 4 0 0 0100 0110 0110 1101 1011 0100 0000 0000 140: 100 0110 0 15213: 13 1110 1101 1011 01 DIM0404 Padrão IEEE 754 – Codificação Não­Normalizada 14 Exp = 00...0 Expoente E = ­bias +1 M = 0.xx...x2 Casos: Exp=00...0, frac=00...0 – representa o valor 0 (valores diferentes para +0 e ­0) Exp=00...0, frac=≠00...0 – representam números pequenos próximos de 0.0, perdendo precisão a medida que ficam menores (underflow “gradual”) DIM0404 Padrão IEEE 754 – Valores Especiais exp = 11...1 Casos: Exp = 111…1, frac=00...0 • Representa o valor infinito ∞, operações que geram overflow (positivo ou negativo), por exemplo 1.0/0.0 = ­1.0/­0.0 = +∞ , 1.0/­0.0 = ­∞ Exp = 111…1, frac ≠ 00...0 • Not­a­number (NaN), representando casos onde nenhum valor numérico pode ser determinado, como srqt(­1) ou ∞ ­∞ 15 DIM0404 Padrão IEEE 754 −∞ ­Normalized NaN +Denorm ­Denorm −0 16 +0 DIM0404 +Normalized +∞ NaN Arredondamento em Ponto Flutuante x Arredondar um número por outro com um número de dígitos significativos, consiste em encontrar um número , pertencente ao sistema x de numeração, tal que seja o menor possível ∣x −x∣ x F ,t ,m , M Dado , seja sua representação em x adotando arredondamento. Se , então , x=0 x =0 se não for, então escolhemos e tais que e s 1 1 ∣x∣=s×e , onde −1 1− −t s1− −t 2 2 17 DIM0404 Arredondamento em Ponto Flutuante e [−m , M ] Se está fora do intervalo o número não pode ser representado no sistema. Caso contrário pode­se calcular 1 −t s =0.d 1 d 2 d t d t 1 2 e truncar o resultado em dígitos, obtendo t e x =sinal x 0.d1 d 2 d t × 18 DIM0404 Arredondamento em Ponto Flutuante Considere o sistema F(10,3,5,5). Represente os números x1=1234.56, x2=­0.00054962, x3=0.9995, x4=123456.7, x5=­0.0000001 Os valores permitidos para s são 1 1 10−1 1− 10−3 s1− 10−3 0.09995s0.9995 2 2 19 Para x1=1234.56 temos x 1 =1234.56⇒∣x 1∣=0.123456×10 4 1 s 10−3 =0.1234560.0005=0.123956 2 4 x 1 =0.123×10 DIM0404 Operações Aritméticas em Ponto Flutuante Como arredondamentos são feitos após cada operação aritmética, as operações de adição, subtração, divisão e multiplicação não são associativas nem distributivas, ao contrário de quando usadas com números reais Considerando um sistema com base 10 e 3 dígitos significativos 11.43.185.05 e 11.43.185.05 3.18×11.4 3.18 e ×11.4 5.05 5.05 3.18× 5.0511.4 e 3.18×5.053.18×11.4 0.3330.3330.333 e 3.31 20 DIM0404 10 vezes Efeitos Numéricos Além dos erros causados por arredondamentos em operações aritméticas, alguns efeitos afetam a qualidade dos cálculos, como cancelamento, propagação de erros, instabilidade numérica e mal condicionamento O cancelamento ocorre na subtração de dois números quase iguais, pois o expoente permanece o mesmo e os dígitos iniciais são todos zero, perdendo­se dígitos significativos do resultado 9.876− 9.875 9.876=0.9937806599×10 e 9.875=0.9937303457×10 9.876− 9.875=0.0000503142×10 =0.5031420000×10 2 2 21 DIM0404 2 −2 Cancelamento Como resolver o problema? Neste caso podemos usar a identidade abaixo para obtermos um resultado preciso x− y= 9.876− 9.875= 1 x−y x y −4 9.876− 9.875 =0.5031418679×10 Exemplo: resolva a equação 2 x −1634x2=0 x= 2 1634± 1634 −42 2 =817± 667487 x 1 =817816.9987760=0.1633998776×10 3 e x 2 =817−816.9987760=0.1224000000×10−2 x 1 ×x 2 =2 x 2= 22 1 0.1633998776×10 DIM0404 −2 =0.1223991125×10 3 Propagação de Erros A propagação de erros ocorre quando uma ou mais somas parciais têm o expoente maior que a soma final n k s= ∑ a , k=1 s1 =a 1, sk =sk −1 a k , k=2,3, , n ∞ k e = ∑ −1 −x x k k! e−5.25 =0.10000−0.52500×101 k =0 2 0.13781−0.241170.31654−0.332360.29082−0.218110.14314×10 −0.8349 70.4383 6−0.2092 2×101 0.915 32−0.369 650.138 62×10 0 −0.48 5160.15 919×10 −0.4 91640.1 4339×10 −0.396200.10401×10 −1 −2 −4 −5 −0.26003×10 0.62050−0.14163×10 0.30982×10 −2 =0.65974×10 23 DIM0404 −6 −3 Propagação de Erros Mas o valor correto com cinco dígitos −5.25 −2 e =0.52475×10 significativos é Podemos recalcular o valor usando a identidade ∞ 1 xk −x x e = x e =∑ e a fórmula e k= 0 e 5.25 =0.19057×10 3 e−5.25 = 24 k! 1 −2 =0.52475×10 3 0.19057×10 DIM0404 Instabilidade Numérica 25 Se um resultado intermediário é contaminado por um erro de arredondamento, este erro pode influenciar todos os resultados subseqüentes que dependem deste valor, propagando, assim, os erros de arredondamento Entretanto, os erros de arredondamento, podem, em alguns casos, cancelar­se uns com os outros parcialmente ou totalmente, resultando em um erro desprezível no final. Algoritmos com esta propriedade são chamados estáveis DIM0404 Instabilidade Numérica A instabilidade numérica ocorre quando os erros intermediários têm uma influência muito grande no 1 −1 n x resultado final I n =e ∫ x e dx 0 I n =e −1 { n x 1 1 [ x e ] −∫ n x 0 0 n−1 x } e dx , ou seja I n =1−n I n−1 , n=1, 2, , Como I 0 =e 1 ∫ e x dx=e−1 e−1=0.6321, temos −1 0 I 0 =0.6321, I 1=0.3679 I 2 =0.2642 I 3 =0.2074 I 4 =0.1704 26 I 5=0.1480 I 6 =0.1120 I 7 =0.2160 DIM0404 Instabilidade Numérica Entretanto o resultado de I7 está errado, já que x 1 n I 7 e max 0e1 e ∫ x dx −1 0 1 n1 = 1 8 Observe que a seqüência In é decrescente. Neste caso, usando a relação de recorrência anterior o erro cresce de acordo com o fator n a cada passo. A relação de recorrência é instável, mas a relação inversa pode não 1−I n ser, vejamos: I n =1−n I n−1 , n=1, 2,, I n−1= n Não temos o valor de In, para n > 0, mas sabemos que In → 0 quando n → ∞ 27 DIM0404 Instabilidade Numérica Entretanto, setando I20=0 e calculando a relação de recorrência acima, obtemos I7=0.1123835, o resultado com todos os dígitos corretos 28 Neste caso, deve se ter cuidado com o valor inicial setado, para que um número suficiente de iterações sejam feitas, diminuindo, assim, o erro da estimativa inicial DIM0404 Mal Condicionamento 29 Na resolução de um problema numérico, se cria um algoritmo para resolver um problema,a partir de dados de entrada Problemas cujos resultados dependem continuamente dos dados de entrada são ditos bem postos, em oposição aos problemas mal postos, mal condicionados ou críticos DIM0404 Mal Condicionamento Por exemplo, resolva os sistemas lineares abaixo { 30 x + y = 2 x + 1.01y = 2.01 { x + y = 2 x + 1.01y = 2.02 Uma pequena mudança nos dados de entrada gerou uma grande mudança na saída, isto é, esse é um problema mal­condicionado A interpretação geométrica desse resultado nos mostra quão sensível o problema é à mudanças nos dados de entrada DIM0404 Mal Condicionamento Seja X o espaço dos dados, d(x,y) uma função de distância, e P um processo contínuo que transforma os dados x no resultado y, isto é, y=P(x), a definição de continuidade matemática exige que para cada 0, ∃ () > 0, tais que ∣P x − P x ∣ sempre que ∣x − x∣ 31 Quanto maior a função () puder ser escolhida, mais contínuo é o processo P DIM0404 Mal Condicionamento O número de condição do problema indica se um problema é ou não mal condicionado Seja y=P(x), com P diferenciável. Então, a mudança em y causada pela mudança em x pode ser aproximada pelo diferencial de y. Logo, o comprimento de representa o número de condição de um problema num ponto x. O número de condição ∣P ' x∣ relativa é definido por c r = ∣P x∣ 32 Se cr ≤ 1 dizemos que o problema é relativamente bem condicionado DIM0404 Mal Condicionamento Calculando o número de condição relativa − f x = ln 1/ x f ' x= −1 8 − ln1/ x 9 8 −1/ x 1/ x 1 8 2 = 1 8x − ln1/ x 9 8 1 ∣ f ' x ∣ cr = = ∣ f x∣ 8x ln1/ x Para x=0 e x=1, cr = ∞, ou seja, ele é extremamente mal condicionado. No intervalo 0.1537 ≤ x ≤ 0.5360, 33 cr ≤ 1 o problema de calcular f é bem condicionado DIM0404 Mal Condicionamento 34 Teoricamente, o termo mal condicionado é usado para modelos matemáticos e o termo instabilidade para algoritmos, mas na prática ambos são usados sem distinção DIM0404 Efeitos Numéricos 35 DIM0404 Efeitos Numéricos 36 DIM0404 Efeitos Numéricos 37 DIM0404 Efeitos Numéricos 38 DIM0404 Efeitos Numéricos 39 DIM0404 Ariane 5 40 Explodiu 37 segundos após o lançamento, com uma carga avaliada em US$500,000,000.00 Motivo: software calculava velocidade horizontal usando ponto flutuante, e convertia resultado para um inteiro com 16 bits Software funcionou sem problemas para o Ariane 4, mas não para o Ariane 5 DIM0404 Processamento Digital de Sinais 41 Existem várias definições de quais tarefas Processamento de Imagens engloba, logo existem várias maneiras de classificar as etapas fundamentais em PI A figura do próximo slide mostra uma destas classificações, separando as fases em dois grupos, de acordo com a natureza de seus resultados Dependendo da aplicação, várias ou apenas uma das etapas da figura a seguir podem estar presentes em um sistema real DIM0404