Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reais, racionais e o IEEE 754

Reais, racionais e o IEEE 754

A continuidade do conjunto dos números reis. O argumento diagonal de Cantor. Ponto-fixo versus ponto-flutuante. O padrão IEEE754 e as representações single, double e quad. Problemas na conversão decimal para binário. Incrível 99,9936% dos números decimais entre 0 e 1,com 7 dígitos, geram dízimas na base dois. Logo possuem apenas representação IEEE aproximada.

Paulo Bordoni

July 05, 2013
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Sir Isaac Newton 1642 - 1726 Gottfried Wilhelm Leibnitz 1646

    - 1716 Os criadores do Cálculo Diferencial e Integral
  2. Processos limite e convergência Integrais Na modelagem científica dos fenômenos

    físicos, são essenciais conceitos do cálculo diferencial e integral como:
  3. O conjunto dos números reais é um contínuo! Eles preenchem

    um intervalo como um líquido preenche continuamente um copo graduado Na base de tudo isso está conceito de número real.
  4. Karl Theodor Wilhelm Weierstrass 1815 – 1897 O número 2

    é a sequência ( 1., 1.4, 1.41, 1.414, 1.4142,... )
  5. O que significa ser contínuo? Professor ... A água parece

    ser contínua, mas é formada de moléculas de H 2 O – dois átomos de hidrogênio mais um de oxigênio, numa ligação ...
  6. Pois é, Surfista, por trás de sua fala está a

    ideia que os reais são enumeráveis. Você acertou num ponto - os reais constituem um conjunto infinito, já que todo racional também é real. Entretanto, nem mesmo com microscópios eletrônicos, conseguimos separar um número real de outro.
  7. É o que os Mestres estão afirmando Surfista. O infinito

    contínuo é maior que o infinito enumerável. Se os reais são infinitos e não conseguimos enumerá-los então só pode ser um novo infinito, maior que enumerável, já que todo racional é um real.
  8. Essa ideia estava subjacente, implícita, latente, nas construções de Descartes,

    Newton e Leibnitz. Sem ela as construções desses gênios seriam abortos – mortas antes de nascer! A continuidade dos reais é a abstração maior da Matemática.
  9. Professor, vamos assumir que podemos, de fato, enumerar os reais.

    Veremos que essa hipótese é tão absurda que conduz a uma contradição. E, portanto, só pode estar errada. Pois é, meus jovens, provaremos a seguir que é impossível contar os números reais.
  10. Só p’rá confirmar: se é uma enumeração, nenhum número real

    entre e 0 e 1 fica fora dessa lista! 0 ↔ x 0 1 ↔ x 1 2 ↔ x 2 3 ↔ x 3 . . . . . . . Ok Professora. Seja então a lista abaixo dos meus pés uma enumeração de todos os números reais entre 0 e 1. Inteiros Reais
  11. X0 = 0,0 1 0 2 5 1 7 ...

    X1 = 0,2 3 3 4 4 4 5 ... X2 = 0,5 3 1 0 7 4 3 ... X3 = 0,2 3 4 9 2 1 0 ... X4 = 0,1 7 3 0 3 3 1 ... X5 = 0,2 4 5 7 9 2 3 ... X6 = 0,7 3 3 1 8 3 4 ... ........................ Sim Professora, como estamos assumindo que os reais em (0,1) são enumeráveis, minha lista contém todos eles! Veja a expressão decimal dos números reais da minha lista:
  12. Ora Surfista, a lista do Professor é infinita, em alguma

    posição eles vão aparecer! Ah, eu escreveria a lista de uma forma diferente. Além disso, não vi alguns números famosos como o π e o 2.
  13. X0 = 0,0 1 0 2 5 1 7 ...

    X1 = 0,2 3 3 4 4 4 5 ... X2 = 0,5 3 1 0 7 4 3 ... X3 = 0,2 3 4 9 2 1 0 ... X4 = 0,1 7 3 0 3 3 1 ... X5 = 0,2 4 5 7 9 2 3 ... X6 = 0,7 3 3 1 8 3 4 ... ........................ Cantor marcou, como nós (em vermelho), os dígitos da diagonal.
  14. X0 = 0,0 1 0 2 5 1 7 ...

    X1 = 0,2 3 3 4 4 4 5 ... X2 = 0,5 3 1 0 7 4 3 ... X3 = 0,2 3 4 9 2 1 0 ... X4 = 0,1 7 3 0 3 3 1 ... X5 = 0,2 4 5 7 9 2 3 ... X6 = 0,7 3 3 1 8 3 4 ... ........................ Em seguida afirmou: Seja x D número construído a partir da sequência diagonal, com as trocas: Em x 0  0 por 1 Em x 1  3 por 4 Em x 2  1 por 2 Em x 3  9 por 8 (?) Em x 4  3 por 4 Em x 5  2 por 3 Em x 6  4 por 5 E assim por diante ...
  15. Em x 0 : 0 por 1  x D

    ≠ x 0 Em x 1 : 3 por 4  x D ≠ x 1 Em x 2 : 1 por 2  x D ≠ x 2 Em x 3 : 9 por 8  x D ≠ x 3 Em x 4 : 3 por 4  x D ≠ x 4 Em x 5 : 2 por 3  x D ≠ x 5 Em x 6 : 4 por 5  x D ≠ x 6 E assim por diante ... É verdade Mestre. Sacada genial essa do Cantor! Portanto esse número, X D = 0, 1 4 2 8 3 5 ..., é diferente de todos os que estão na lista.
  16. Em outras palavras, o número, X D = 0, 1

    4 2 8 3 5 ... não está na lista. Mas se a lista tinha todos, temos aí uma contradição!
  17. Assim, temos uma nova categoria de infinitude: a continuidade, maior

    que a enumerabilidade. Pois é, meus jovens, acabamos de ver a prova feita pelo Cantor de que é impossível contar os números reais.
  18. Não existem números reais nos computadores, uma catástrofe! Agora, uma

    PÉSSIMA NOTÍCIA. Na computação temos um problema muito pior que o do transbordamento!
  19. É verdade meus jovens, estamos limitados a trabalhar com números

    racionais (frações) nos computadores. É pior que isto, professor, apenas com uma parte, um subconjunto finito, dos racionais!
  20. Senhores há algo de muito estranho nisso – o computador

    - maior instrumento tecnológico da humanidade obriga-nos a um retorno aos Pitagóricos. Lembrem-se, na Escola de Pitágoras só eram permitidas as frações, os incomensuráveis eram proibidos e, diz a lenda, eles mataram por isso.
  21. No sistema métrico decimal o fator de escala é 10:

    • 1 m = 100 cm = 1,000 mm • 1 km = 1.000 m Assim: • 3 m = 3∗102 cm = 3∗103 mm • 5,2 km = 5,2∗103 m = 5,2 ∗106 mm
  22. Qualquer número real y ≠ 0 pode ser representado sob

    a forma y = ± y 0 . y 1 ... y k ... ∗ 10 exp com 0 < y 0 < 10 Os . . . É possível provar que: Esses ... significam infinitas casas decimais
  23. Qualquer número real y ≠ 0 pode ser representado de

    forma única como y = ± y 0 . y 1 ... y k ... ∗ 10 exp y 0 ≠ 0 A normalização! Essa representação é única sob duas exigências: 1. y 0 ≠ 0, dita normalização; 2. São proibidas cadeias infinitas de 9’s.
  24. y = ± y 0 . y 1 ... y

    k ∗ 10 exp com 0 < y 0 < 10 Sem esses ... O diabo é que, como nas réguas, num computador digital, os ... são impossíveis! Somos forçados a trabalhar com representações finitas!
  25. y = ± y 0 . y 1 ... y

    k ∗ 10 exp Sinal Expoente Fração Fator de escala As quatro características fundamentais: Realmente trabalharemos com uma fração (número racional), pois o número de casas decimais é finito.
  26. y = ± y 0 . y 1 ... y

    k ∗ 2 exp Fração Expoente Sinal Fator de escala A diferença é que a fração e o expoente serão números binários. O fator de escala também será 2. No computador as quatro características fundamentais permanecem:
  27. Séries numéricas convergentes Somas finitas Nos computadores digitais: Expoentes restritos

    a uma faixa Frações de tamanho finito É a finitude no computador digital Representações finitas de cadeias de 0’s e 1’s, os bits. Tanto na fração como no expoente!
  28. x x x x x x Look at the floating

    point Ponto-flutuante porquê:
  29. Mas a notação de ponto-fixo é mais fácil! Sim! Quero

    ver você escrever a constante de Avogadro, 6.02214179(30)×1023 mol-1 em ponto-fixo!
  30. O IEEE 754/2008 é o padrão adotado atualmente para a

    representação computacional de ponto flutuante nas implementações tanto de software como de hardware. Vamos começar a estudar o Padrão IEEE 754/2008. Então vá vestir um smoking!
  31. • Formatos aritméticos; • Formatos para intercâmbio • Algoritmos para

    arredondamento; • Operações algébricas • Manipulação de exceções O padrão estabelece: Falta de respeito! Você deveria estar de smoking!
  32. Single: (1,8,23) Double: (1,11,52) Quad: (1,15,112) O padrão estabelece três

    formatos: Acrescente o bit escondido na fração! O padrão IEEE 754/2008:
  33. Sinal de X Expoente de X Fração de X A

    representação binária de um número X é armazenada em três campos: Representação IEEE 754/2008
  34. A normalização exige que o primeiro bit da fração seja

    positivo. Na base 2, ser ≠ 0 significa ser = 1. Portanto não há necessidade de representá-lo. Ganha-se 1 bit com isto. Ainda tem o “hiden” bit:
  35. 1 bit para o sinal 16 bytes 15 bits para

    o expoente 112 bits para a fração O padrão Quad
  36. 1 bit para o sinal 8 bytes 11 bits para

    o expoente 52 bits para a fração O padrão Double
  37. 1 bit para o sinal 4 bytes 8 bits para

    o expoente 23 bits para a fração O padrão Single
  38. s e f O campo do sinal nos 3 padrões:

    Single, Double e Quad: s = 0 se x > 0 1 se x < 0
  39. É armazenada uma sequência de 8 bits: o complemento a

    2 do número, somado com um desvio de 127 10 = 0111111 2 . s e f O campo do expoente no padrão Single
  40. s e f O campo do expoente no padrão Double

    É armazenada uma sequência de 11 bits: o complemento a 2 do número, somado com um desvio de 1023 10 = 011.1111.1111 2 . 10
  41. Por exemplo, se o expoente é 3 (positivo) seu complemento

    a 2 é ele mesmo: 0000 0011. O que é armazenado em Single é 0000 0011 + 0111 1111 = 1000 0010. É o mesmo que converter 130 = 127+3, para a base 2. Já, se o expoente é -3, seu complemento a 2 é 1111 1101. Então em Single é armazenado 1111 1101 + 0111 1111 = 0111 1100. É o mesmo que converter 124 = 127 – 3 para a base 2 (que tem só 7 dígitos) e acrescentar um 0 na frente.
  42. s e f O campo da fração no padrão Single

    É armazenada uma sequência de 23 bits, f 1 f 2 ... f 23 , dada pela fração decimal f 1 ∗ 2-1 + f 2 ∗ 2-2 + ... + f 23 ∗ 2-23 obtida a partir de x.
  43. (-1)s ∗ 2e-127 ∗ (1.f) ..... se 0 < e

    < 255 (-1)s ∗ 2e-126 ∗ (0.f) .... se e = 0 e f ≠ 0 (-1)s ∗ 0 ....................... se e = 0 e f = 0 (-1)s ∗ Inf ................... se e = 255 e f = 0 NaN ............................ se e = 255 e f ≠ 0 x = s e f O padrão Single
  44. (-1)s ∗ 2e-1023 ∗ (1.f) .... se 0 < e

    < 2047 (-1)s ∗ 2e-1022 ∗ (0.f) ... se e = 0 e f ≠ 0 (-1)s ∗ 0 ....................... se e = 0 e f = 0 (-1)s ∗ Inf ................... se e = 2047 e f = 0 NaN ............................ se e = 2047 e f ≠ 0 x = s e f O padrão Double
  45. -127  0000-0000 -126  0000-0001 ... -2  0111-1101

    -1  0111-1110 -0  0111-1111 +0  0111-1111 +1  1000-0000 +2  1000-0001 ... +127  1111-1110 +128  1111-1111 Base 10 Faixa normal Excessão Desnormalização Padrão IEEE 754/2008. A ordenação dos expoentes em Single
  46. Faixa dos NaN negat. Faixas positiva e negativa dos desnormalizados

    Faixa normal negativa Faixa normal positiva  + Faixa dos NaN posit. Esta é a reta “real” nos computadores.
  47. No padrão IEEE 754/2008, existem 232 = 4.294.967.296 números Single.

    No padrão IEEE 754/2008, existem 264 = 18.446.744.073.709.551.616 números Double.
  48. Ao pressionar uma tecla fecha-se o circuito e é transmitido

    um sinal elétrico para um chip, que o transforma em código ASCII ou UNICODE. Teclado: 3 folhas de laminado plástico. Duas com circuitos impressos. A 3ª isola essas duas e possui furos sob cada tecla Numa “fios” direção; na outra os fios são transversais
  49. Professor, explique-nos como as coisas ocorrem de forma transparente aos

    usuários. • Passo 1 – O usuário digita um número pelo teclado que é recebido pelo chip; • Passo 2 – O processador recebe a cadeia alfa-numérica ASCII codificada pelo chip; • Passo 3 – A Python Virtual Machine, PVM, recebe essa cadeia do processador e a transforma em um número decimal; • Passo 4 – Em seguida a PVM converte-o para sua representação binária IEEE 754.
  50. Indo direto ao ponto: o algoritmo para obtenção da representação

    na base 2 de um número entre 0 e 1, escrito na base 10, pode ser descrito por: Multiplique o número dado sucessivamente por 2 e vá coletando os “vai 0” ou “vai 1”. Algoritmo?
  51. Nesse exemplo eu mostro como converter 0.3 para a base

    2. 0.3 = 0. 0.3 ∗ 2 0.6 0 0.6 ∗ 2 1.2 1 0.2 ∗ 2 0.4 0 0.4 ∗ 2 0.8 0 0.8 ∗ 2 1.6 1 0.6 ∗ 2 1.2 1 1 0 0 . . .
  52. Em todos os outros casos, a representação na base 2,

    do número racional é uma seqüência periódica – uma “bí”zima periódica Para números racionais, o algoritmo de conversão descrito na transparência anterior só termina em um número finito de passos quando o número é uma potência (negativa) de 2 ou uma soma de potências (negativas) de 2. Gerando “bi”zimas periódicas.
  53. 80% dos números decimais com apenas 1 dígito após a

    vírgula geram dízimas periódicas na base 2 Construí um programa Python que recebe um número entre zero e um, escrito na base 10, com apenas uma casa decimal após a vírgula, e o converte para a base dois. 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
  54. 0.00 0.01 ... 0.24 0.25 0.26 ... 0.49 0.50 0.51

    ... 0.74 0.75 0.76 ... 0.99 Confira que 96% dos números decimais com apenas 2 dígito após a vírgula geram dízimas periódicas na base 2
  55. Repita isso para números com 3, 4, 5, 6, 7

    casas decimais após a vírgula ... Depois dê uma olhada na próxima transparência!
  56. Sete é algum número mágico Mestra?! Não minha Loirinha querida!

    É que no padrão Single, temos 24 = 23 + 1 bits de precisão.
  57. É só responder à pergunta: “24 casas binárias correspondem a

    quantas casas decimais?” Em matemática: qual o valor de K para o qual: 10-K = 2-24 Continuo não entendendo! Resolvendo a equação acima encontramos K = 24*log10(2) = 7.224719 ≅ 7
  58. 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

    80% 0.00 0.01 ... 0.24 0.25 0.26 ... 0.49 0.50 0.51 ... 0.74 0.75 0.76 ... 0.99 96% 0.000 0.001 ... 0.124 0.125 0.126 ... 0.499 0.500 0.501 ... 0.874 0.875 0.876 ... 0.999 99.2% 0.0000000 0.0000001 ... 0.xxxxxxx 0.xxxxxxx 0.xxxxxxx ... 0.4999999 0.5000000 0.5000001 ... 0.xxxxxxx 0.xxxxxxx 0.xxxxxxx ... 0.9999999 99.9936% A grande maioria é “bi”zima periódica. No padrão Single: 99,99 %.
  59. A consequência é funesta para o cálculo de funções ...

    São apenas 274.877, de números corretos, do total de 4.294.967.296, no caso dos Single.