Você está na página 1de 7

Cálculo Numérico

Prof. Vicente Helano


Aula 1

Sistemas numéricos de ponto flutuante

Nestas anotações, iremos nos concentrar em sistemas numéricos binários e deci-


mais, seguindo o mais próximo possı́vel as ideias estabelecidas no padrão IEEE754-
2008.

1.1 Sistema numérico


Um sistema numérico de ponto flutuante F é definido, basicamente, por quatro
parâmetros:

(a) uma base β ≥ 2;


(b) uma precisão t ≥ 2;
(c) dois valores extremos para o expoente emin e emax tais que emin < emax .

Dado um sistema numérico de ponto flutuante arbitrário, um número x deste


sistema pode ser expresso por:

x = ±m × β e

onde:

(a) e é um inteiro tal que emin ≤ e ≤ emax , denominado o expoente de x;


(b) m = (d0 ,d1 d2 d3 . . . dt−1 )β , com di ∈ {0, 1, . . . , β − 1} e 0 ≤ m < β, é a mantissa
de x escrita na base β.

No que se segue, quando não especificado, os números serão escritos usando a


base decimal.

1.2 Representação normalizada


No intuito de se obter uma representação única, adota-se uma representação nor-
malizada.

Exemplo 1. Considere um sistema numérico com β = 10, t = 3, emin = −2, emax = 3


e x = (3)10 . Observe que podemos escrever x = +(3,00)10 × 100 , x = +(0,30)10 × 101
ou x = +(0,03)10 × 102 .

Com a normalização, teremos duas classes de números, além do zero:

(a) Números normais, aqueles com 1 ≤ m < β;


(b) Números subnormais, aqueles com 0 < m < 1 e e = emin .

Com isso, no caso do exemplo anterior, teremos x = +(3,00)10 × 100 .

1 de 7
Cálculo Numérico
Prof. Vicente Helano
Aula 1

Exemplo 2. Dado um sistema binário com t = 3, emin = 0 e emax = 1, para o número


x = (3,5)10 , temos:
x = +(11,1)2 × 20 ,
= +(1,11)2 × 21
Logo, x é um número normal. Por outro lado, y = (0,75)10 = +(0,11)2 × 20 e,
portanto, y é subnormal.

1.3 Valores extremos


É importante conhecermos os valores extremos do sistema numérico que estivermos
trabalhando.
emin
{z . . . 0})β × β
(a) O menor normal positivo é +(1,000000
| = β emin ;
t − 1 dı́gitos

emax
{z . . . d})β × β
(b) O maior normal positivo é Ω = +(d,dddddd
| , onde d = β − 1.
t − 1 dı́gitos
Ora, mas
(d,dddddd . . . d)β = (β − 1) β 0 + β −1 + β −2 + · · · + β 1−t


= (β − β 1−t ),
logo, Ω = (β − β 1−t ) × β emax ;

{z . . . 1})β × β
(c) O menor subnormal positivo é α = +(0,000000
|
emin
= β emin −t+1 ;
t − 1 dı́gitos

emin
{z . . . d})β × β
(d) O maior subnormal é +(0,dddddd
| = (1 − β 1−t ) × β emin , onde
t − 1 dı́gitos
d = β − 1.
Exemplo 3. Para o caso do sistema do Exemplo 2, temos:
(a) O menor normal positivo é 20 = (1)10 ;
(b) O maior normal positivo é Ω = (2 − 21−3 ) × 21 = (3,5)10 ;
(c) O menor subnormal positivo é α = 20−3+1 = (0,25)10 ;
(d) O maior subnormal positivo é (1 − 21−3 ) × 20 = (0,75)10 .
Exemplo 4. Usando β = 2, t = 24, emin = −126 e emax = +127, o menor normal
positivo é:
2−126 ≈ (1,1754943508222875)10 × 10−38 ;
o maior normal positivo é:
Ω = (2 − 21−24 ) × 2127 ≈ (3,4028234663852886)10 × 10+38 ;
o menor subnormal positivo é
α = 2−126−24+1 = 2−149 ≈ (1,401298464324817)10 × 10−45 ;
e o maior subnormal positivo é
(1 − 21−24 ) × 2−126 ≈ (1,1754942106924411)10 × 10−38 .

2 de 7
Cálculo Numérico
Prof. Vicente Helano
Aula 1

1.4 Sistemas binários


1.4.1 Expoente
O expoente é armazenado utilizando a mesma base β da mantissa. Embora possamos
especificar os valores de emin e emax como dito anteriormente, na prática, o conjunto
de valores possı́veis para o expoente depende de β e da quantidade de dı́gitos E
reservada para o mesmo.
Por exemplo, para E = 2 e β = 10, é possı́vel representar 100 valores distintos
de expoente. Já no caso de E = 2 e β = 2, temos apenas 4 possibilidades para o
expoente.
Por questões de desempenho, o expoente é armazenado como um inteiro sem
sinal, usando a técnica de polarização. Com efeito, suponha um sistema binário
com E bits reservados para o expoente. Neste caso, há 2E expoentes possı́veis:
{−(2E−1 − 1), − (2E−1 − 2), . . . , −2, −1, 0, +1, +2, . . . , +(2E−1 − 1), +2E−1 }.
Dado um expoente e, definimos a função de polarização por P −1 (e) = e + b, onde
b = 2E−1 − 1 é denominado fator de polarização. Temos então o valor real e do
expoente e seu valor armazenado P −1 (e).

Exemplo 5. Sejam E = 3 e β = 2. Neste caso, temos 23 = 8 expoentes distintos:


{−3, −2, −1, 0, +1, +2, +3, +4},
e o fator de polarização b = 23−1 −1 = 3. Assim, o expoente e = −2 será armazenado
como P −1 (−2) = −2 + 3 = 1 = (001)2 .

1.4.2 Bit implı́cito, exceções e expoentes disponı́veis


Observe que, no caso de sistemas binários, a mantissa de um número normal sempre
possui a forma (1,d1 d2 . . . dt−1 )2 e de um subnormal é (0,d1 d2 . . . dt−1 )2 . Por este
motivo, o bit d0 é armazenado de modo implı́cito. Com isso, ganhamos um bit extra
de precisão. Este bit é denominado bit implı́cito.
O valor do bit implı́cito (0 ou 1) de um número x = ±m×2e é indicado pelo valor
armazenado de e. Quando P −1 (e) for igual a zero, m será igual a (0,d1 d2 . . . dt−1 )2 ,
isto é, x é um número subnormal. Caso contrário, x é normal.
É importante lembrar que algumas situações com números reais não podem ser
representadas como números normais ou subnormais. Isto acontece quando nos
deparamos com ±∞ ou indeterminações, denominadas Not a Number (NaN), do
tipo 0/0, ±∞/ ± ∞, 0 × ±∞, etc. A ocorrência destas situações é indicada pelo
valor armazenado
P −1 (e) = 2E − 1 = (11 . . . 1})2 .
| {z
E bits

Teremos ±∞ quando m = (d0 ,00 · · · 0)2 , para qualquer valor de d0 . Caso contrário,
representamos NaN.

Exemplo 6. Usando β = 2, t = 23 e E = 8, temos emin = −(28−1 − 2) = −126 e


emax = +(28−1 − 1) = +127. Representamos +∞ como:

3 de 7
Cálculo Numérico
Prof. Vicente Helano
Aula 1

31 23 0

01111111100000000000000000000000

e as indeterminações por:
31 23 0

011111111 6= 0

ou
31 23 0

111111111 6= 0

Com isso, os valores disponı́veis de expoente ficam restritos ao intervalo:

emin = −(2E−1 − 2) ≤ e ≤ emax = +(2E−1 − 1).

Exemplo 7. Considerando β = 2 e E = 3, temos emin = −(23−1 − 2) = −2 e


emax = +(23−1 − 1) = +3.

1.4.3 Regras de arredondamento


Um sistema numérico de ponto flutuante F é um subconjunto finito de R. Portanto, é
de se esperar que nem todas as propriedades dos números reais permaneçam válidas
neste sistema. De fato, se um número real x não pertence a F, devemos aproximá-lo
por fl(x) ∈ F. O erro absoluto associado à aproximação fl(x) de x é dado por:

EA(x) = |x − fl(x)|

e o erro relativo por:


|x − fl(x)|
ER(x) = .
|x|
para x 6= 0. É importante lembrar que o erro relativo, quando este pode ser calcu-
lado, possui a vantagem de independer da magnitude dos valores envolvidos.
O padrão IEEE754 estabelece quatro modos de arredondamento. Dado x ∈ R,
temos as seguintes possibilidades:

• Para baixo: fl(x) = RD(x) é o maior número de F (possivelmente −∞)


menor ou igual a x;
• Para cima: fl(x) = RU(x) é o menor número de F (possivelmente +∞) maior
ou igual a x;
• Em direção ao zero: fl(x) = RZ(x) é igual a RD(x) se x ≥ 0, ou a RU(x)
se x ≤ 0 (conhecido como truncamento);
• Para o mais próximo: fl(x) = RN(x) é o número de F que está mais próximo
de x.

4 de 7
Cálculo Numérico
Prof. Vicente Helano
Aula 1

Na prática, aconselha-se sempre arredondar para o mais próximo, quebrando os


empates com a regra do dı́gito par mais à direita. Considere um sistema binário
F com precisão t. Dado um número real x = (d0 ,d1 d2 . . . dt−1 dt . . . )2 × 2e , o maior
número de F menor do que x é dado por:

x− = (d0 ,d1 d2 . . . dt−1 )2 × 2e

e o menor número de F maior do que x é:

x+ = (d0 ,d1 d2 . . . dt−1 + 0,00 . . . 01)2 × 2e

O valor de fl(x) é calculado levando-se em consideração os valores de x− e x+ ,


como a seguir.

(1) Se dt for igual a zero, então fl(x) = x− ;


(2) Caso contrário,
(2.1) Se ao menos um dos bits subsequentes for igual a 1, então fl(x) = x+ ;
(2.2) Caso contrário, existe um empate. Neste caso, analisamos os bits j =
(t − 1) até 1 de ambos, x− e x+ . Arredondamos x para aquele cujo
j-ésimo bit vale zero.

Exemplo 8. Considere um sistema com β = 2, t = 3, emin = −1 e emax = 2. Dados


x = (1,625)10 e y = (1,7)10 , quanto valem RN(x) e RN(y)? Calcule os erros absoluto
e relativo correspondentes.
Sabemos que:
(1,625)10 = (1,101000 . . . )2 × 20
o qual está exatamente no meio do intervalo definido por:

x− = (1,10)2 × 20 = (1,5)10 e x+ = (1,11)2 × 20 = (1,75)10 .

Como o bit d2 de x− vale 0, concluı́mos que

RN(x) = x− = (1,10)2 × 20 = (1,5)10 .

O erro absoluto é EA(x) = |1,625 − 1,5| = 0,125. Já o erro relativo vale:
0,125
ER(x) = ≈ 0,076923
1,625
Agora, para y = (1,7)10 = (1,101100)2 × 20 , temos:

y− = (1,10)2 × 20 = (1,5)10 e y+ = (1,11)2 × 20 = (1,75)10 .

Como o bit d3 de y vale 1 e existem bits subsequentes também iguais a 1, concluı́mos


que:
RN(y) = y+ = (1,11)2 × 20 = (1,75)10 .
Neste caso, o erro absoluto é EA(y) = |1,7 − 1,75| = 0,05. Já o erro relativo vale:
0,05
ER(y) = ≈ 0,029412
1,7

5 de 7
Cálculo Numérico
Prof. Vicente Helano
Aula 1

1.4.4 Padrão IEEE754


O grupo IEEE754 foi formado na década de 70 para definir um padrão para a repre-
sentação de números reais, o qual seria adotado pelas indústrias de computadores.
Participavam o próprio IEEE, a Apple, Zilog, DEC, Intel, Hewlett-Packard, Mo-
torola e National Semiconductor. Ao final, foram estabelecidos:

• formatos binários e decimais para números em ponto flutuante


• operações: adição, subtração, multiplicação, divisão, raiz quadrada, com-
paração e outras
• conversão entre inteiro e formatos em ponto flutuante
• conversão entre formatos diferentes de ponto flutuante
• conversões entre formatos de ponto flutuante e outras representações (e.g.,
cadeias de caracteres)
• tratamento de exceções: NaNs, overflow, underflow, etc.

Foram definidos cinco formatos de ponto flutuante básicos:

• Três formatos binários com 32, 64, e 128 bits cada


• Dois formatos decimais com 64 e 128 bits cada

Os formatos mais usados em programas computacionais são aqueles com β = 2


e 32 bits (precisão simples) ou 64 bits (precisão dupla). No sistema de precisão
simples, a precisão é t = 24 (considerando o bit implı́cito) e o número de bits para
o expoente E = 8:

31 23 0

Já em precisão dupla, temos t = 53 (considerando o bit implı́cito) e E = 11.

1.5 Overflow e underflow


Sejam α = β emin −t+1 o menor subnormal positivo e Ω = (β − β 1−t ) × β emax o maior
normal positivo. O tamanho da lacuna entre Ω e seu sucessor, ainda que não exis-
tente no sistema de ponto flutuante, é β 1−t × β emax .
Teremos RN(x) = +∞ quando:
1
x ≥ Ω + β 1−t × β emax
 2 
1 1−t
= β− β × β emax ,
2

denominado overflow, e RN(x) = +0 quando 0 < x ≤ α/2, denominado underflow.

6 de 7
Cálculo Numérico
Prof. Vicente Helano
Aula 1

Referências
[1] E. Ward Cheney and David R. Kincaid. Numerical Mathematics and Computing.
Brooks/Cole Publishing Co., Pacific Grove, CA, USA, 6th edition, 2007.

[2] Jean-Michel Muller, Nicolas Brisebarre, Florent de Dinechin, Claude-Pierre


Jeannerod, Vincent Lefèvre, Guillaume Melquiond, Nathalie Revol, Damien
Stehlé, and Serge Torres. Handbook of Floating-Point Arithmetic. Birkhäuser
Boston, Boston, 2010.

Última atualização em 23 de fevereiro de 2018

7 de 7

Você também pode gostar