é 1 . 0000 0000 0000 0000 0000 001 Assim = 1 223 ≅ 1.1920928955078125 ∗ 10−7 4 8 12 16 20 23 posição No Toy 2, o 1º número após 1.0 é 1.0001 2 e então 2 = 1/24 = 0.0625.
representação do IEEE 754, Single, Double, Quad Toy 1 ou Toy 2. 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.
< + 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.
regularidade para números muito pequenos (realmente minúsculos) foi necessário criar a faixa de denormalização. (-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
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.
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
ponto flutuante de a partir de um certo dígito. Uma forma de aproximar um número ∈ ℝ/ (portanto já na base 2 e normalizado), por um número ∗ do IEEE 754 é por truncamento.
Bits da fração de x TRUNCAR significa desprezar todos esses bits de x! • Toy 1 ......... 2 bits • Toy 2 ........ 4 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 ∗
Toy 1 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.
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.
Quad ? Os números ∈ ℝ aos quais poderemos associar um NÚMERO ∗ ∈ 1, via truncamento, são aqueles situados no intervalo (−, +). No Toy 1, o intervalo (-16,+16). +Inf
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 ∶ ℝ → 1 é o de uma função escada. A figura só mostra a parte inferior do gráfico. Lá embaixo, os de- normalizados, em amarelo.
figura 2ª figura Sim querida, veja a mudança de escala entre as duas figuras E para ∈ ℝ, ≤ 0, o gráfico de f l é o reflexo desse com relação aos eixos-x e y.
< , é 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 1.
cometido ao aproximarmos por f l (x), quando truncamos. O Mestre acabou de provar que − || < ℰ , para ∈ −, + , quando usamos truncamento para obter ().
IEEE 754: Para todo número real ∈ (−, +) temos = (1 + ) para algum satisfazendo < , onde é o épsilon do sistema de ponto flutuante IEEE 754, quando usamos truncamento.
= 0 + 1 = 1 (∗) onde: • 1 = 0.00 ⋯ 01 (1 na última posição da fração); • o bit na posição + 1 de , dito bit de arredondamento ∗ − eventualmente será necessário renormalizar ∗.
devolve suas representações binárias IEEE 754/2008 em: • Half (via numpy.float16) • Single (via numpy.float32) • Double (via nump.float64) Na formatação de saída forçamos 16 dígitos após a vírgula para exibir os erros inerentes ao processo.
do erro no cálculo de funções. Aguardem! Vou retroceder no tempo, lá para a Magna Grécia, nos 400 AC. Desisto de apoiar os cursos desse Professor. Lá usamos ábacos – são mais confiáveis que esses computadores.
sobre esses assuntos no Numpy sem ter que que olhar o Manuel todinho – da 1ª à última página??? Bem Loirinha, resolva sua angústia com seu Psicanalista. Aqui usaremos o Google!
tipos float do Numpy (seus limites). Mestra não vejo como proceder para utilizar essa classe. Além disso, parece que faltam informações (Atributos = ??).
< 31 (-1)s ∗ 2e-14 ∗ (0.f) .... se e = 0 e f ≠ 0 (-1)s ∗ 0 ..................... se e = 0 e f = 0 (-1)s ∗ Inf ................. se e = 31 e f = 0 NaN .......................... se e = 31 e f ≠ 0 x = O bias é 01111 = 15 e épsolon é dado por ε = 2-10 = 1/1024 = 0.0009765625. A regra de decodificação é: