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

Entendendo o IEEE 754

Entendendo o IEEE 754

Apresento alguns aspectos do UNICODE, da representação decimal em ponto flutuante (ou de engenharia) e a binária. Em seguida apresento a representação IEEE 754 de ponto flutuante (single e double e Toy) e começo sua análise detalhada. Mostro que 99.99% dos números com até 7 casas decimais apresentam erro na conversão para binário tipo single. Apresento os conceitos de truncamento e arredondamento e de "épsilon da máquina" de ULP. Fecho com Teorema fundamental da representação de ponto flutuante do IEEE 754.

Paulo Bordoni

April 08, 2014
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. No teclado estão os caracteres, símbolos que o ser humano

    entende. Os significados são cadeias de bits (0’s e 1’s), que o processador entende. Começaremos olhando para codificações. Elas são como dicionários: uma lista de símbolos, cada um com seu significado.
  2. Ao pressionar uma tecla fecha-se o circuito e é transmitido

    um sinal elétrico para um chip, que o transforma em 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” na direção longitudinal; na outra os fios são transversais
  3. Fiquei meio perdida com tanta informação. O que eu preciso

    saber de fato? Sherlock, resuma como as coisas se processam de forma transparente para nós, os usuários. Como numerais digitados viram números.
  4. 1. O usuário digita um numeral (inteiro ou real) pelo

    teclado que é recebido pelo chip (lá no canto superior direito); 2. O chip codifica os símbolos digitados para UNICODE e os envia sequencialmente para o processador; 3. O processador e/ou a PVM (Python Virtual Machine) , ou JVM (Java Virtual Machine) ou a .net (da Microsoft) recebem essa cadeia UNICODE e a transformam em um número computável. Vamos entender como.
  5. Vamos focar nos números reais. Com os inteiros tudo é

    mais simples. Vamos começar pela representação decimal de um número real:
  6. O conjunto D é o dos dígitos, ⋯ 1 0

    é a parte inteira de y e 1 ⋯ ⋯ a parte fracionária de y. Qualquer número ∈ ℝ pode ser representado na forma decimal = ± ⋯ 1 0 . 1 ⋯ ⋯, com , ∈ = 0,1,2, ⋯ , 9 . Sabemos que:
  7. ⋯ 1 0 = = 10 + ⋯ + 1

    101 + 0 100 = =0 10 Lembrem-se, trata-se de uma taquigrafia. A parte inteira de y é uma soma:
  8. Sim, porque além das dízimas periódicas como 0.333..., existem os

    irracionais, como 2 = 1.414213 … , = 3.141592 … , = 2.718281 … . E a parte fracionária, 0. 1 ⋯ ⋯ pode não terminar.
  9. 0. 1 ⋯ ⋯ = = 1 /101+ ⋯ +

    /10 + ⋯ = lim →∞ =1 10− = lim →∞ =1 10− A parte fracionária não é, necessariamente, uma soma. Trata-se de uma série - o limite de uma sequência de somas parciais (*): (*) – Eventualmente existe ∈ ℕ tal que = 0 para > – então temos um racional.
  10. Em outras palavras, os ... ao final de = ±

    ⋯ 1 0 . 1 ⋯ ⋯ escondem um Curso de Cálculo! Ahá !!!!! Sempre desconfiei que havia gato na tuba ...
  11. Para unicidade da representação = ± ⋯ 1 0 .

    1 ⋯ ⋯, na parte fracionária são proibidas cadeias infinitas de 9’s, tipo 2.425999 … Ah, eu aprendi a somar PGs no 2º grau: 0.000999 … = 0.001.
  12. Bem, cientistas e engenheiros perceberam que seria vantajoso escrever números

    sob a forma de ponto flutuante: = 0 . 1 ⋯ ⋯ ∗ 10
  13. ... 0002374.0 x 10-2 000237.40 x 10-1 00023.740 x 10-0

    0002.3740 x 10+1 00.237400 x 10+2 0.0237400 x 10+3 ... 23.74 = Look at the floating point Ponto-flutuante porquê: Na base 10, multiplicar por uma potência de 10 resulta em deslocar (flutuar) o separador decimal ao longo da representação decimal do número.
  14. 23.74 , 0.001, 3.141592, 1.4142135623730951 Sim! Quero ver você escrever

    a constante de Avogadro, 6.02214179(30)×1023 mol-1 em ponto-fixo! Mas a notação de ponto-fixo é mais fácil!
  15. Qualquer número real y ≠ 0 pode ser representado de

    forma única como = 0 . 1 ⋯ ⋯ ∗ 10 y 0 ≠ 0 É a normalização. Detalhe: se 0 ≠ 0 essa representação é única!
  16. = 0 . 1 ⋯ ⋯ ∗ 10 y 0

    ≠ 0 A forma normal de um número real ≠ 0 é:
  17. O fator de normalização 10 é a potência de 10

    que, ao multiplicar o número, o coloca na forma normal (i;é, com sua parte inteira com apenas um dígito, diferente de zero). Vejam alguns exemplos: 345.123 = 3.45123 × 102, 0.000783 = 7.83 × 10−4, 1535 = 1.535 × 103.
  18. 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
  19. = 0 . 1 ⋯ ∗ 10, com 0 <

    0 < 10. Sem os ... O ponto em questão é que nas réguas, e na prática, os ... são impossíveis! Somos forçados a trabalhar com representações finitas!
  20. Sim, numa régua comum você consegue precisão de cerca de

    1/2 milímetro, Surfista. Com microscópios, algumas casas a mais.
  21. 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.
  22. = ±0 . 1 ⋯ ∗ 2 Fração Expoente Sinal

    Fator de escala No computador as quatro características fundamentais permanecem: A diferença é que a fração e o expoente serão números binários. E o fator de escala será 2.
  23. Tá brincando! Só pode ser piada de Manuel! Surfista, tenho

    uma notícia muito cruel para tí: Não existem números reais nos computadores!
  24. É a mais pura verdade meus jovens. Estamos limitados a

    trabalhar com números racionais (frações) nos computadores. É bem pior que isto, professor, apenas com uma parte, um subconjunto finito dos racionais!
  25. Séries numéricas convergentes Somas finitas Nos computadores digitais: Expoentes restritos

    a uma faixa Frações de tamanho finito Representações finitas de cadeias de 0’s e 1’s, os bits. Tanto na fração como no expoente! É a finitude no computador digital
  26. Senhores algo fede no Reino da Dinamarca (e na Câmara

    de vereadores do Rio). 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.
  27. 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 ao padrão IEEE 754/2008. Então vá vestir um smoking!
  28. • 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!
  29. 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: Os formatos binários adotados no padrão IEEE 754/2008 são definidos por uma terna (s, e, f ) cujos valores estabelecem a quantidade de bits para cada campo da representação binária de ponto flutuante normalizada do número: • s campo do sinal; • e campo do expoente; • f campo da fração (ou mantissa).
  30. 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 padrão IEEE 754/2008
  31. Sim. A normalização exige que o primeiro bit da fração

    seja não-nulo. Ora, ≠ 0 ⇒ = 1. Assim, não há necessidade de representá-lo. Ganha-se um bit no armazenamento do nº. E ainda tem o “hiden” bit!
  32. 1 bit para o sinal 16 bytes 15 bits para

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

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

    o expoente 23 bits para a fração O padrão Single
  35. s e f s = 0 se x > 0

    1 se x < 0 O campo do sinal nos 3 padrões: Single, Double e Quad:
  36. É 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
  37. s e f É 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 O campo do expoente no padrão Double
  38. 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.
  39. s e f É 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. O campo da fração no padrão Single
  40. (-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 A conversão no padrão Single
  41. (-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
  42. -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
  43. Faixa dos NaN negat. Faixas positiva e negativa dos denormalizados

    Faixa normal negativa Faixa normal positiva Faixa dos NaN posit. +Inf -Inf Esta é a reta “real” nos computadores. Mais furadinha que peneira!
  44. No padrão IEEE 754/2008, existem 232 = 4.294.967.296 números Single.

    Mais que 4 bilhões. No padrão IEEE 754/2008, existem 264 = 18.446.744.073.709.551.616 números Double. Mais que 18 quintilhões.
  45. Só para lembrar: É impossível contar os números da reta

    real, trata-se de um infinito contínuo!
  46. 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?
  47. 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 . . .
  48. Para números racionais, o algoritmo de conversão 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. 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
  49. 80% dos números decimais com apenas 1 dígito após a

    vírgula geram dízimas periódicas na base 2 Surfista! Construa 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 converta para a base dois. 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
  50. 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
  51. 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!
  52. 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 %.
  53. A consequência poderá ser funesta ao calcularmos valores de funções

    ... São apenas 274.877, de números corretos do total de 4.294.967.296, no caso dos Single. Não chega a 6 milésimos %.
  54. Não minha Loirinha querida! É que no padrão Single, temos

    24 = 23 + 1 bits de precisão. O Mestre parou em sete dígitos após a vírgula. Por quê? Sete é algum número mágico Mestra?!
  55. É só responder à pergunta: “24 casas binárias correspondem a

    quantas casas decimais?” Em matemática: qual o valor de k para o qual: 10 = 224 Resolvendo a equação acima encontramos = 24 ∗ 10 2 = 24 ∗ 0.301030 = 7.224719 ≅ 7 Continuo não entendendo!
  56. Para entender melhor o padrão IEEE 754/2008 vamos construir um

    sistema numérico de brinquedo. Fala sério, Mestre!
  57. s e f Toy IEEE 64 números Vamos construir um

    sistema Toy IEEE, com 6 bits :
  58. -3 000 -2 001 -1 010 0 011 1 100

    2 101 3 110 4 111 Faixa normal Exceção De-normalização e s e f Toy IEEE No Toy IEEE os expoentes possíveis são os 8 abaixo:
  59. s e f Toy IEEE 00 ....... 0.00 01 .......

    0.25 10 ....... 0.50 11 ....... 0.75 f Já no Single são 223 = 8.388.608 frações possíveis No Toy IEEE as frações possíveis são as 22 = 4 abaixo:
  60. (-1)s ∗ 2e-3 ∗ (1.f) ..... se e = 1,2,3,4,5,6

    (-1)s ∗ 2e-2 ∗ (0.f) .... se e = 0 e f ≠ 0 (-1)s ∗ 0 .................... se e = 0 e f = 0 (-1)s ∗ Inf ................ se e = 7 e f = 0 NaN ......................... se e = 7 e f ≠ 0 x = Construímos o padrão Toy IEEE para visualizar os números no computador. Nele, a regra de decodificação é semelhante à dos outros.
  61. Na primeira linha da matriz os de-normalizados. Na última a

    faixa de exceções; o 16. corresponde ao +Inf e 20., 24. e 28. aos NaN. As 6 linhas internas são os nos. normais. E os negativos?
  62. Vejam, para cada grupo de 4 números, o fator de

    escala muda. Acompanhem a inclinação das retinhas.
  63. Vou quebrar esse gráfico em dois para examinar melhor. Um

    de y = 2. para baixo e outro de y = 2. para cima. Sim, para cada grupo de 4 números do Toy IEEE o fator de escala muda numa potência de 2: 2-2, 2-2, 2-1, 20, 21, 23 e 24.
  64. Valeu, Mestre, inclusive vejo que a escala é a mesma

    para a menor faixa dos normais e a dos de-normalizados, em vermelho.
  65. Imaginem se não houvesse sido criada a faixa de denormalização.

    A distância do menor normal positivo m* à zero seria muito maior que a de m*, ao normal seguinte, causando uma enorme perda de precisão! m*
  66. No Single é a mesma coisa, só que ele é

    dado por 2−127 ∗ (1. ). Com = 1 = 00 … 00, obtemos 1 2126 ≅ 1.1754943508222875 ∗ 10−38 O menor normal positivo noToy IEEE é dado por 2−3 ∗ (1. ). Com = 1 = 00, obtemos 1/22 = 0.25.
  67. Vejam, o maior normal é 14. Já em vermelho: •

    +Inf corresponde a 16. • e os NaN a 20., 24. e 28.
  68. Exatamente, +∞ ∉ ℝ. E o + faz o papel

    de +∞ no Toy IEEE e em todos sistemas IEEE 754. Mestre, aprendi em Cálculo I que ±∞ não são números. Então, pq + = 16 ?
  69. Observe, por exemplo, no Toy IEEE, que: • 14. +12.

    = 26. > +, • 7.∗ 8. = 56. > +. Então, ao executar um programa, o sistema IEEE 754 informará que essas operações resultam em NaN teremos como evitar uma travada na sua execução! Mestre, então qual a razão dos NaN existirem ?
  70. No Single é a mesma coisa, só que ele é

    dado por 2−127 ∗ 1. . Com = 254 = 11 … 1, obtemos 2128 ∗ (1 + 1/2 + ⋯ + 223) = = 2128 ∗ (224 − 1)/223 = 2105 ∗ (224 − 1) ≅ 6.805646932770577 + 38 O maior normal no Toy IEEE é dado por 2−3 ∗ (1. ). Com = 6 = 11 obtemos 23 ∗ (1 + 1/2 + 1/4) = 8 ∗ 7/4 = 14.
  71. Ora 1.11 … 1 2 = 1 + 1/2 +

    1/4 + ⋯ + 1/223. E, prova-se (por indução finita em N), que 1 + 1/2 + 1/4 + ⋯ + 1/2 = (2+1 − 1)/2. Mestre, porque 1.11 … 1 2 = (224 − 1)/223 ?
  72. = 0.25 O épsilon é IMPORTANTÍSSIMO em Cálculo Numérico Define-se

    ε (leia épsilon) como “a distância entre 1.0 e o próximo número normal da representação IEEE”
  73. No IEEE Single, o próximo número normal depois do 1.0

    é 1 . 0000 0000 0000 0000 0000 001 Assim = 1 223 ≅ 1.1920928955078125 ∗ 10−7 4 8 12 16 20 23 posição
  74. No IEEE Double, o próximo número normal depois do 1.0

    é 1 . 0000 0000 0000 ... 0000 0000 0001 Assim = 1/252 ≅ 2.220446049250313 ∗ 10−16 4 8 12 44 48 52 posição
  75. A distância entre pontos consecutivos dos Toy IEEE, no Single,

    etc, será sempre um múltiplo de seu ε por uma potência de 2 (o fator de escala). 2ε ε ε/2
  76. ε ULP é uma sigla para unit in the last

    position. A unidade na última posição de , (), para ∈ é o número definido por = 2exp(). Nada mais que o produto do fator de escala de por .
  77. Os sistemas IEEE 754 de ponto flutuante NÃO foram criados

    para representar números reais no computador.
  78. Sim, para aproximar, pois os sistemas IEEE são constituídos apenas

    por uma quantidade enorme, porém finita, de números racionais. Eles foram criados para aproximar!
  79. O ato de aproximar, não importa como, terá que ser

    descrito por uma função. Para garantir que, a um número ∈ ℝ não estejam associados mais do que um aproximando.
  80. Uma causa não pode possuir mais que um efeito. Efeito

    Outro efeito Causa Situação proibida para funções É, nós matemáticos sabemos disso. Está na definição de função:
  81. Saber que será uma função facilita enormemente a investigação –

    já conseguimos um mapa da mina! Sim. Além da regra de associação, toda função possui um domínio, um contradomínio e um conjunto imagem.
  82. É óbvio que o contradomínio será um dos sistemas de

    representação do IEEE 754, Single, Double, Quad ou Toy IEEE. E, o domínio, o conjunto ℝ dos números reais. O nome de batismo escolhido para essas funções será de float, mais um qualificativo.
  83. O passo seguinte envolve a normalização de 2 . O

    1º passo para calcular a representação padrão IEEE 754 de um número ∈ ℝ é obter sua representação binária 2 .
  84. A forma normal de 2 é definida por 2 =

    ±2(2) ∗ 1. (2 ) ATENÇÃO: Ao normalizar 2 o expoente de normalização (2 ) é um número inteiro qualquer, isto é (2 ) ∈ ℤ.
  85. A primeira limitação, estabelecida pelo padrão IEEE 754 é no

    fator de escala: ≤ (2 ) ≤ . Tipo Half -14 16 Single -126 128 Double -1.022 1.024 Quad -16.382 16.384
  86. Os números ∈ ℝ para os quais − < 2

    < + são classificados como normais. São os “números reais” com os quais operamos normalmente nos computadores. + e − são os limitantes superior e inferior do padrão IEE 754 – são “divisores de águas”. Eles correspondem aos números reais 2 e −2 respectivamente.
  87. O zero não é passível de normalização. Para preservar a

    regularidade para números muito pequenos (realmente minúsculos) foi necessário criar a faixa de denormalização.
  88. Eles são classificados como NaN (Not a Number) ou ±.

    São entidades incluídas no padrão IEEE 754 para tratamento de exceções. Não são passíveis das operações aritméticas elementares. Números reais cujo expoente 2 ≥ são números grandes demais para serem incluídos na representação padrão IEEE 754.
  89. ATENÇÃO! A razão de ser dos números nos computadores é

    computar. Sempre atento Filósofo! Os NaN, + e – não estão no IEEE 754 para efetuarmos continhas com eles. Computar = efetuar as operações aritméticas básicas
  90. Truncar significa desprezar os dígitos da fração da representação de

    ponto flutuante de a partir de um certo dígito. Uma forma de aproximar um número já na base 2 e normalizado, por um número ∗ do IEEE 754 é por truncamento.
  91. Bit do sinal de x Bits do expoente de x

    Bits da fração de x TRUNCAR significa desprezar todos esses bits de x! • Toy IEEE .. 2 bits • Single ........ 23 bits • Double ....... 52 bits • Quad .......... 112 bits A representação binária normalizada de e o nº de bits a manter na fração para obter ∗
  92. Fique esperto Surfista, no truncamento, ∗ é o número de

    Toy IEEE entre e zero, não o mais próximo. Idem, ibidem, para os outros sistemas IEEE (Single, Double e Quad). ∗ Para ir de para ∗ caminhamos em direção ao zero. Inclusive quando é negativo.
  93. Pois é, no truncamento você sempre “perde” dígitos, mas preste

    atenção no exemplo: Truncando 2.38 obtemos 2.3 e truncando −2.38 obtemos −2.3, ambos mais próximos de zero (Note que −2.3 > −2.38). Assim, ao truncar, você sempre “caminha” em direção ao zero. Mas, se no truncamento “perdemos” dígitos então ∗ ≤ , de forma que ∗ sempre estará à esquerda de , na reta real.
  94. Surfista, quais são os intervalos correspondentes noToy2, Single, Double e

    Quad ? Os números ∈ ℝ aos quais poderemos associar um NÚMERO ∗ ∈ , via truncamento, são aqueles situados no intervalo (−, +). No Toy IEEE, o intervalo (-16,+16). +Inf
  95. 1.0 1.25 0.75 0.25 0.5 0.62 5 0.0625 0.125 2.5

    2.0 1.75 1.5 0.1875 0.3125 0.375 0.4375 0.87 5 0.0 1.25 0.75 0.25 0.5 0.625 0.0625 0.125 2.5 2.0 1.75 1.5 0.1875 0.3125 0.375 0.4375 0.875 0.0 1.0 Portanto, o gráfico da função ∶ ℝ → é o de uma função escada. A figura só mostra a parte inferior do gráfico. Lá embaixo, os de- normalizados, em amarelo.
  96. 16.0 14.0 5.0 12.0 10.0 6.0 7.0 8.0 4.0 20.0

    24.0 3.5 3.0 +Inf 14.0 5.0 12.0 10.0 6.0 7.0 8.0 4.0 NaN 3.5 3.0 A parte superior do gráfico. Vejam o + e o NaN.
  97. Professora, os dois gráficos estão em escalas diferentes, não? Sim

    querida, veja as distâncias entre 2.0 e 2.5 na 1º e entre 3.0 e 3.5 na 2°. E para ∈ ℝ, ≤ 0, o gráfico de f l é o reflexo desse com relação aos eixos-x e y.
  98. É importante observarmos que exp = exp(∗) quando ∗ =

    , porque efetuamos a normalização antes de truncar para obter ∗. Portanto: ∗ = ε ∙ exp ∗ = ε ∙ exp = , embora isto possa soar de forma estranha.
  99. ∗ = () ∗ = () Assim, a desigualdade −

    < , é válida para qualquer sistema de ponto flutuante IEEE 754, quando usamos truncamento para ∈ −, + , na faixa normal. Essa desigualdade é óbvia, já que (∗) é a distância entre ∗ e o elemento seguinte de Toy IEEE.
  100. Observem que − < , estabelece um limite superior para

    o erro absoluto cometido ao aproximarmos por , quando ∈ −, + . Atenção Mestre! Você esqueceu de excluir os denormalizados dessa tua afirmação.
  101. A partir de − < , podemos provar que −

    () < , ∀ ∈ −, + , ≠ 0. Novamente! Você esqueceu de excluir os denormalizados dessa tua afirmação.
  102. Essas duas afirmações são conhecidadas na literatura como teorema fundamental

    da representação de ponto flutuante IEEE 754. ∀ ∈ −, + , na faixa normal: − < . Erro absoluto ∀ ∈ −, + , ≠ 0, na faixa normal: − () < . Erro relativo
  103. Mestra, o erro relativo independe o valor de ? Exatamente

    minha filha, excelente observação!