Slide 1

Slide 1 text

Reais, racionais e o IEEE 754/2008 Prof. Paulo R. G. Bordoni UFRJ

Slide 2

Slide 2 text

Sir Isaac Newton 1642 - 1726 Gottfried Wilhelm Leibnitz 1646 - 1716 Os criadores do Cálculo Diferencial e Integral

Slide 3

Slide 3 text

Nas 1as linhas do Prefácio deste livro encontramos:

Slide 4

Slide 4 text

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:

Slide 5

Slide 5 text

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.

Slide 6

Slide 6 text

Augustin-Louis Cauchy 1789 – 1857 O conceito de limite com épisolons e deltas

Slide 7

Slide 7 text

Karl Theodor Wilhelm Weierstrass 1815 – 1897 O número 2 é a sequência ( 1., 1.4, 1.41, 1.414, 1.4142,... )

Slide 8

Slide 8 text

Julius Wilhelm Richard Dedekind (1831 – 1916) Os números reais, a reta e os “cortes” de Dedekind.

Slide 9

Slide 9 text

Cortando a reta?

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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.

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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.

Slide 14

Slide 14 text

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.

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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:

Slide 17

Slide 17 text

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.

Slide 18

Slide 18 text

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.

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

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!

Slide 22

Slide 22 text

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.

Slide 23

Slide 23 text

Eis o gênio em carne e osso: Georg Ferdinand Ludwig Philipp Cantor 1845 - 1918

Slide 24

Slide 24 text

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!

Slide 25

Slide 25 text

Tá brincando! Só pode ser piada do Manuel! Pois é a mais pura verdade, ó gajo!

Slide 26

Slide 26 text

É 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!

Slide 27

Slide 27 text

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.

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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.

Slide 31

Slide 31 text

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!

Slide 32

Slide 32 text

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.

Slide 33

Slide 33 text

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:

Slide 34

Slide 34 text

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!

Slide 35

Slide 35 text

Ponto-fixo, ponto-flutuante, etc. Agora vamos analisar em detalhe as representações numéricas no computador!

Slide 36

Slide 36 text

Que coisa é essa de ponto-fixo e de ponto-flutuante?!

Slide 37

Slide 37 text

x x x x x x Look at the floating point Ponto-flutuante porquê:

Slide 38

Slide 38 text

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!

Slide 39

Slide 39 text

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!

Slide 40

Slide 40 text

• 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!

Slide 41

Slide 41 text

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:

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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:

Slide 44

Slide 44 text

1 bit para o sinal 16 bytes 15 bits para o expoente 112 bits para a fração O padrão Quad

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

1 bit para o sinal 4 bytes 8 bits para o expoente 23 bits para a fração O padrão Single

Slide 47

Slide 47 text

s e f O campo do sinal nos 3 padrões: Single, Double e Quad: s = 0 se x > 0 1 se x < 0

Slide 48

Slide 48 text

É 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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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.

Slide 51

Slide 51 text

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.

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

-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

Slide 55

Slide 55 text

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.

Slide 56

Slide 56 text

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.

Slide 57

Slide 57 text

Lembrem-se, É impossível contar os números da reta real, trata-se de um infinito contínuo!

Slide 58

Slide 58 text

Há problemas na conversão base 10  base 2

Slide 59

Slide 59 text

O código ASCII, considerando símbolos de 7 bits.

Slide 60

Slide 60 text

O código ASCII, ampliado para símbolos de 8 bits.

Slide 61

Slide 61 text

O UNICODE, com símbolos de 16 bits.

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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.

Slide 64

Slide 64 text

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?

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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.

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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!

Slide 70

Slide 70 text

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.

Slide 71

Slide 71 text

É 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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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.

Slide 74

Slide 74 text

Mas só entraremos nos detalhes no próximo conjunto de transparências!

Slide 75

Slide 75 text

Tchau! Até a próxima.