You are on page 1of 23

Captulo 1

Aritmetica no Computador
1.1 Introdu cao
Hoje em dia, os computadores utilizam um sistema de numera cao em base 2, em sua grande
maioria. Esse sistema e chamado de bin ario e utiliza os algarismos 0 e 1 para representar os
n umeros (apesar de que quaisquer outros dois smbolos poderiam ser usados).
A nossa sociedade, ao contr ario, utiliza um sistema de numeracao decimal, ou base 10; muito
provavelmente, pelo fato dos seres humanos terem dez dedos nas maos, os quais eram utilizados
como uma crianca os utiliza para contar quantidades. A palavra dgito, sin onimo para algarismo,
vem do latim digitus, dedo.
Ambos os sistemas citados decimal e bin ario s ao sistemas posicionais, i.e., os n umeros s ao
formados por somas de potencias, convenientemente multiplicadas pelos algarismos. Por exemplo,
o n umero
(420, 325)
10
= 4 10
2
+ 2 10
1
+ 0 10
0
+ 3 10
1
+ 2 10
1
+ 5 10
3
(1.1)
e representado no sistema decimal como a soma das potencias de 10 mostradas acima.
A principal caracterstica de um sistema de numeracao posicional e a necessidade da repre-
sentacao do zero por um smbolo. Aparentemente, o zero j a era utilizado pelos maias e pelos
babil onios, esses por volta de 300 A.C. O nosso sistema de numeracao decimal foi inventado na

India por volta do ano 600 D.C. e, tendo sido usado por muitos seculos pelos povos arabes no
Oriente Medio, foi introduzido na Europa durante as invas oes mouras, no perodo entre 1200 e
1600 (da o nome de algarismos ar abicos).
Veja como o zero e importante num sistema posicional, comparado com um sistema nao-
posicional, como o romano, por exemplo. Nesse ultimo, o n umero 401 e representado como CCCCI
(os romanos n ao utilizavam as abrevia coes como IV para representar 4). Porem, no sistema
decimal, o 0 e necessario para distinguir 401 de 41 ele efetivamente serve como um espa cador
dos algarismos, em termos das potencias de 10.

E interessante notar que o sistema decimal era utilizado para representar apenas n umeros
inteiros, e n ao fra coes decimais, ate o seculo XVII. Em pases de lngua inglesa, ate hoje persiste
o uso de fra coes inteiras como 1/4, 1/8, 1/16, 3/4, como por exemplo em placas de sinaliza cao
rodovi aria e na especicacao dos di ametros de ferramentas.
Como dissemos ao iniciarmos esse captulo, os computadores utilizam normalmente um sistema
de numeracao bin ario, ou base 2. Esse sistema nao e, no entanto, t ao recente quanto os computado-
res; na verdade, j a era usado como base para um algoritmo de multiplica cao no Papiro Matem atico
de Rhind, escrito ha 4,000 anos atr as [12, p ag. 7].
6
Introdu c ao ao Calculo Numerico Aritmetica no Computador
1.2 Representacao em binario e decimal
Genericamente, podemos dizer que um sistema de numeracao numa base admite apenas os
dgitos 0, 1, . . ., 1. Assim, o n umero (1001, 11101)
2
representa o n umero (9, 90625)
10
, onde os
subscritos indicam a base do sistema de numera cao utilizado:
(1001, 11101)
2
= 1 2
3
+ 0 2
2
+ 0 2
1
+ 1 2
0
+
1 2
1
+ 1 2
2
+ 1 2
3
+ 0 2
4
+ 1 2
5
= 8 + 0 + 0 + 1 + 0, 5 + 0, 25 + 0, 125 + 0 + 0, 03125
= (9, 90625)
10
Assim como existem n umeros reais, em decimal, que tem parte fracion aria com n umero innito
de dgitos ditos irracionais tambem existem n umeros reais em bin ario com a mesma carac-
terstica. Mais ainda, existem n umeros reais, em decimal, cuja parte fracion aria tem um n umero
nito de dgitos, para os quais a sua representa cao em bin ario apresenta um n umero innito de
dgitos. Por exemplo, o n umero 1/10 n ao tem uma representacao bin aria nita:
1
10
= (0, 0001100110011 . . .)
2
=
1
16
+
1
32
+
0
64
+
0
128
+
1
256
+
1
512
+
0
1024
+ . . .
mas o conjunto de dgitos 0011 repete-se.
1.2.1 Bits, bytes e palavras
A memoria de um computador pode ser descrita como um conjunto de palavras. A maioria
dos computadores tem sua memoria estruturada de tal forma que cada acesso de leitura ou
escrita e feito em termos de uma ou mais palavras, as quais sao acessadas por um endere co
unico. Tipicamente, uma palavra e composta por 32 bits; processadores de ultima gera cao para
microcomputadores pessoais com palavras de 64 bits j a sao uma realidade hoje.
Um bit (contracao em ingles de binary digit) e a menor unidade de informa cao armazenada
em um computador, podendo representar os valores 0 ou 1. Um conjunto de 8 bits e chamado de
byte; nele, podemos armazenar 2
8
= 256 diferentes valores inteiros, atraves das combinacoes de 0
e 1 entre os diferentes bits.
1.2.2 Conversao entre representacoes

E conveniente saber como converter um n umero decimal para sua representacao em bin ario e
vice-versa. Em algumas aplica coes envolvendo o uso de computadores, e necessario saber como
converter para decimal um valor armazenado de forma bin aria.
Podemos efetuar a conversao de um n umero real decimal x para bin ario convertendo separa-
damente as partes inteira e fracion aria de x ip(x) e fp(x) e depois justapor a representa cao
bin aria dessas duas partes, separando-as por um ponto. Nos algoritmos apresentados a seguir, a
conversao de decimal para bin ario resulta em um string de caracteres 0 e 1, e nao num n umero
formado pelos mesmos algarismos, pois nao sao representa coes equivalentes.
Suponha ent ao o n umero x = (401, 640625)
10
. A representa cao bin aria de ip(x) = (401)
10
e
obtida, inicialmente, dividindo-se 401 por 2; essa divis ao devolve um quociente e um resto. O resto
e, necessariamente, 0 ou 1. Ap os, divide-se esse quociente por 2, obtendo-se um outro quociente
e resto. Esse processo e repetido ate que o quociente seja 1; a representa cao bin aria e formada,
ent ao, pelo ultimo quociente e pelos restos, tomados na ordem inversa a que foram obtidos. A
tabela 1.1 mostra esse processo. A representacao em bin ario de ip(x) = (401)
10
e, portanto,
(401)
10
= (110010001)
2
=
= 1 2
8
+ 1 2
7
+ 0 2
6
+ 0 2
5
+ 1 2
4
+ 0 2
3
+ 0 2
2
+ 0 2
1
+ 1 2
0
=
= 256 + 128 + 16 + 1 = 401
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 7
Introdu c ao ao Calculo Numerico Aritmetica no Computador
dividendo quociente resto
401 200 1
200 100 0
100 50 0
50 25 0
25 12 1
12 6 0
6 3 0
3 1 1
Tabela 1.1: Processo de conversao para binario da parte inteira de (401, 640625)
10
; os dgitos
sublinhados comporao a representacao binaria.
Para convertermos a parte fracion aria fp(x) = (0, 640625)
10
, fazemos um processo de multipli-
cac oes sucessivas por 2. Inicialmente, multiplicamos 0, 640625 por 2, resultando em 1, 28125. O
dgito ` a esquerda do ponto decimal ser a um dos dgitos da representa cao bin aria de fp(x); como
esse dgito e igual a 1, subtramos 1 do n umero, resultando em 0, 28125. Esse n umero e, novamente,
multiplicado por 2, resultando em 0, 5625; como o dgito ` a esquerda do ponto decimal e o 0, basta
multiplicar novamente esse n umero por 2. O processo continua ate que o n umero multiplicando
seja igual a 1, 0; os dgitos 0 e 1, ` a esquerda do ponto decimal, formam a representa cao bin aria de
fp(x), agora na mesma ordem em que foram obtidos, conforme mostrado na tabela 1.2
multiplicando resultado
0, 640625 1, 28125
0, 28125 0, 5625
0, 5625 1, 125
0, 125 0, 25
0, 25 0, 5
0, 5 1, 0
Tabela 1.2: Processo de conversao para binario da parte fracionaria de (401, 640625)
10
; os dgitos
sublinhados comporao a representacao binaria.
Logo, a representa cao em bin ario de fp(x) = 0, 640625 e
(0, 640625)
10
= (0, 101001)
2
=
= 1 2
1
+ 0 2
2
+ 1 2
3
+ 0 2
4
+ 0 2
5
+ 1 2
6
=
= 0, 5 + 0, 125 + 0, 15625 = 0, 640625
e, portanto, podemos justapor as representa coes bin arias de ip(401, 640625) = (110010001)
2
e
fp(401, 640625) = (0, 101001)
2
, obtendo a representa cao bin aria de (401, 640625)
10
, a qual e
(110010001, 101001)
2
.
Os algoritmos apresentados a seguir sumarizam os processos de convers ao de decimal para
bin ario e de bin ario para decimal.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 8
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Algoritmo 1.2.1 Convers ao decimal para binario
proc conv dec para bin(input: x; output: b)
% x eh um numero real decimal em modulo e b eh a sua
% representacao binaria, armazenada como um
% string de caracteres.
x [x[
b conv dec para bin ip(ip(x))[conv dec para bin fp(fp(x))
endproc
proc conv dec para bin ip(input: x; output: b)
% x eh um numero inteiro e b eh a sua representacao
% binaria, armazenada como um string de caracteres.
d x/2|
r x 2d
x d
b num2str(r)
while x 1
d x/2|
r x 2d
x d
b num2str(r)[b
endwhile
endproc
proc conv dec para bin fp(input: x; output: b)
% x eh um numero fracionario menor do que 1 e
% b eh a sua representacao binaria, armazenada
% como um string de caracteres.
x [x[
b

while x < 1
d x 2
i d|
if d > 1 then
x d 1
else
x d
endif
b b[num2str(i)
endwhile
endproc
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 9
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Algoritmo 1.2.2 Convers ao binario para decimal
proc conv bin para dec(input: b; output: x)
% b eh um numero binario, armazenado como
% um string de caracteres e x eh a sua
% representacao em decimal.
l length(b)
p ndstr(b,

) % Localiza onde estah o ponto decimal em b


if p ,= 0 then % b eh um numero binario com parte fracionaria
x conv bin para dec ip(substr(b, 1, p 1))+
conv bin para dec fp(substr(b, p, l))
else % b eh um numero inteiro
x conv bin para dec ip(b)
endproc
proc conv bin para dec ip(input: b; output: x)
% b eh um numero binario inteiro, armazenado como
% um string de caracteres e x eh a sua
% representacao em decimal.
l length(b)
x 0
k l
for i = 1, 2, . . . , l
x x + str2num(b[i]) 2
k
k k 1
endfor
endproc
proc conv bin para dec fp(input: b; output: x)
% b eh um numero binario menor do que 1, armazenado
% como um string de caracteres (com . aa frente) e
% x eh a sua representacao em decimal.
l length(b)
x 0
k 1
for i = 2, 3, . . . , l % Desconsidera o 1o. caracter (.)
x x + str2num(b[i]) 2
k
k k + 1
endfor
endproc
Note, no entanto, que se por um lado um n umero inteiro decimal pode ser facilmente repre-
sentado por um n umero inteiro bin ario, a representa cao da parte fracion aria nesse sistema de
numera cao exige, normalmente, um n umero bastante elevado de dgitos. Por exemplo, (0, 249)
10
o qual difere de (0, 25)
10
= (0, 01)
2
por apenas (0, 001)
10
n ao tem representa cao bin aria nita
(pois essa diferenca nao pode ser representada de forma nita): seus primeiros 20 dgitos sao
(0, 0011111110111110011100 . . .)
2
e veja que, como 0, 249 < 0, 25, necessariamente o primeiro dgito n ao-nulo na representacao
bin aria encontra-se `a partir da terceira casa bin aria (pois (0, 25)
10
= (0, 01)
2
).
1.3 Representacao de n umeros em um computador
A representacao de n umeros em um computador est a intimamente relacionada ` as opera coes que
ser ao efetuadas com eles. Inicialmente, consideraremos a representa cao dos n umeros inteiros e,
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 10
Introdu c ao ao Calculo Numerico Aritmetica no Computador
depois, passaremos aos n umeros reais.
1.3.1 Representacao de n umeros inteiros
Hoje em dia, os n umeros inteiros s ao armazenados, tipicamente, em uma palavra de 32 bits.
Considerando apenas n umeros positivos, temos um total de 2
32
n umeros possveis de ser representados
em uma palavra desse comprimento: 0, 1, . . ., 2
32
2, 2
32
1. No entanto, e necessario que se
manipule n umeros inteiros negativos, e, nesse caso, devemos analisar as possibilidades existentes.
O sinal (+/) e uma quantidade bin aria e, portanto, podemos armazenar essa informa cao em
um unico bit. Isso nos leva, portanto, a pensarmos numa representacao chamada sinal-e-m odulo:
dos 32 bits de que dispomos, reservamos um para o sinal, e os restantes 31 representar ao o valor
absoluto do n umero. Essa representa cao apresenta duas carateristicas:
1. A perda de um bit implica na redu cao do intervalo de representa cao dos n umeros. Agora,
so podemos representar os n umeros 0, 1, . . ., 2
31
1 (em modulo);
2. O n umero zero tem duas representacoes: +0 e 0.
Suponha, por exemplo, que quisessemos efetuar +13 () 13; o resultado seria +0 ou 0? Alem
disso, seria necessario existir um circuito, dentro do processador, especco para se efetuar uma
subtra cao; n ao seria melhor que a subtracao fosse tratada como a soma de um n umero positivo e
outro negativo?
Essa ultima caracterstica e que leva ao uso de uma outra representacao para n umeros bin arios
inteiros com sinal, chamada de complemento-de-2. Um n umero x em complemento-de-2 e obtido
invertendo-se os bits da representacao bin aria de [ x[ e somando (1)
2
ao bit menos signicativo.
Para um conjunto de n bits, o intervalo de representa cao de n umeros em complemento-de-2 e
2
n1
x 2
n1
1 (ao passo que, em sinal-e-modulo, e (2
n1
1) x 2
n1
1, pois
um bit e usado para guardar o sinal de x). A tabela 1.3 mostra os inteiros representados em
complemento-de-2, bem como em sinal-e-modulo, para n = 3.
sinal-e-modulo complemento-de-2
+3 (011)
2
(011)
2
+2 (010)
2
(010)
2
+1 (001)
2
(001)
2
+0 (000)
2
(000)
2
0 (100)
2

1 (101)
2
(111)
2
2 (110)
2
(110)
2
3 (111)
2
(101)
2
4 (100)
2
Tabela 1.3: Inteiros em sinal-e-m odulo e complemento-de-2, para n = 3 bits; o bit mais ` a esquerda
representa o sinal no formato sinal-e-magnitude.
Em complemento-de-2, e usando uma palavra de 32 bits, um n umero positivo x satisfaz 0
x 2
31
1, e sua representacao em bin ario (cf. visto na secao anterior) e utilizada para armazen a-
lo, sem modicacoes. No entanto, um n umero negativo y e armazenado como a representacao
bin aria do n umero positivo 2
32
y, e y e tal que ele satisfaz 1 y 2
31
.
Suponha, novamente, a opera cao +13()13. O n umero (+13)
10
tem a seguinte representacao
bin aria
(+13)
10
= (00000000000000000000000000001101)
2
e (13)
10
, em complemento-de-2, e escrito como:
(13)
10
= (11111111111111111111111111110011)
2
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 11
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Agora, para somarmos os dois, seguimos as mesmas regras da adi cao em decimal; procedemos do
bit menos signicativo para o mais signicativo, somando dois bits, x e y, a cada vez. Por exemplo,
(1)
2
+ (1)
2
= (10)
2
= (2)
10
, como esperado
1
. No entanto, e mais costumeiro tratar o resultado
dessa soma como um bit de soma, s, e um de transporte c (do ingles carry), de acordo com a
tabela 1.4.
x y s c
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Tabela 1.4: Soma de dois bits.
Note que os bits s e c sao expressos em termos das opera coes logicas (ou-exclusivo) e
(multiplica c ao l ogica): s = x y e c = x y.
Retornando ao nosso exemplo, somamos (+13)
10
e (13)
10
:
( 00000000000000000000000000001101)
2
+ ( 11111111111111111111111111110011)
2
= (100000000000000000000000000000000)
2
Veja que, a menos do bit mais signicativo do resultado (sublinhado), obtivemos o valor esperado,
ao somar um n umero e seu simetrico: zero. O bit mais signicativo e apenas o bit de transporte,
o qual e descartado, nesse caso.
Ao somarmos dois inteiros positivos, e possvel que ocorra um overow, i.e. o resultado n ao
pode ser representado na palavra (por exemplo, de 32 bits). O mesmo pode acontecer se somarmos
dois inteiros negativos. No entanto, se somarmos dois inteiros de sinais opostos, n ao pode ocorrer
overow. Se considerarmos a opera cao x + (y), e 0 x 2
31
1 e 0 y 2
31
, o resultado
poder a ser sempre representado na palavra. Suponha agora que somemos os complementos-de-2
de x e y, i.e. os n umeros n ao-negativos x e 2
32
y; isso resulta em 2
32
+xy = 2
32
(y x). Se
x y, um bit de transporte correspondente a 2
32
tera o valor 1, mas esse pode ser descartado,
conforme visto anteriormente. Se x < y, o resultado cabe em 32 bits, e ele representa (y x) em
complemento-de-2.
1.3.2 Representacao de n umeros reais
Na representacao de n umeros reais, temos basicamente tres alternativas: representa cao racional,
por ponto-xo e por ponto-utuante.
1.3.2.1 Representa cao racional de n umeros reais
A representacao racional utiliza dois inteiros numerador e denominador para representar
a fra cao. Apesar de permitir representar de forma exata as fra coes, as opera coes aritmeti-
cas envolvendo tal representacao tornam-se bastante complicadas. Em sistemas de computa cao
simbolica, como o MAPLE, Mathematica e Derive, dentre outros, essa representa cao e adotada,
porem cabe ressaltar que ela nao existe em termos de hardware; esses sistemas executam por
software as opera coes aritmeticas envolvendo fra coes (incorrendo em um consideravel aumento
no tempo tomado para se efetuar as opera coes).
1
Esse procedimento e o mesmo que ocorre no sistema decimal: o vai-um na soma de dois dgitos decimais indica
que ela excedeu a 9 e, portanto, deve ser transportado o complemento de 10 da soma (indicado pelo transporte do
1) para o dgito subseq uente.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 12
Introdu c ao ao Calculo Numerico Aritmetica no Computador
1.3.2.2 Representa cao de n umeros reais em ponto-xo
A segunda alternativa e chamada de ponto-xo. Nesse caso, o ponto bin ario ocupa uma posi cao
xa (da o nome) existe uma quantidade pre-denida de dgitos bin arios ` a esquerda e `a direita
do ponto. A palavra do computador e dividida em tres campos:
1. s, sinal do n umero ([ s [ = 1 bit );
2. e, dgitos ` a esquerda do ponto binario ([ e [ = 15 bits, por exemplo);
3. d, dgitos ` a direita do ponto bin ario ([ d [ = 16 bits, por exemplo).
Por exemplo, o n umero 11, 75 e representado em ponto-xo como
1 00000000001011 1100000000000000
Novamente, aqui, existem duas representa coes para o zero; porem, o principal problema reside no
fato de que o intervalo de representacao dos n umeros e bastante pequeno, conforme veremos a
seguir.
1.3.2.3 Representa cao de n umeros reais em ponto-utuante
A terceira maneira de representar n umeros reais em um computador e chamada de ponto-utuante.
Ela e baseada na notacao cientca, i.e. um n umero real x em base decimal e expresso na forma
x = M 10
E
(1.2)
onde M e a mantissa e E e o expoente. Note que se exigirmos que S seja um n umero que satisfa ca
1
10
M < 1
ent ao podemos imaginar que o ponto decimal e movido ` a esquerda ou direita, ajustando-se
convenientemente o valor de E da o nome ponto-utuante. Nesse caso, dizemos que o n umero
x encontra-se em notacao cientca normalizada, pois o primeiro dgito ap os o ponto decimal e
diferente de zero. A nota cao normalizada apresenta uma restricao, a qual e a impossibilidade de
se representar o x = 0; essa restricao ser a removida mais adiante.
A nota cao cientca normalizada pode ser facilmente estendida para n umeros reais em base
bin aria; nesse caso, temos
x = M 2
E
,
1
2
M < 1 (1.3)
de onde M e um n umero na forma
M = (0, b
0
b
1
b
2
b
3
. . .)
2
, b
0
= 1
Por exemplo, o n umero 11, 75 pode ser representado como
(11, 75)
10
= (0, 101111)
2
2
(+100)2
Novamente, aqui, o n umero 0 n ao pode ser representado, pois M 1/2, por deni cao; a represen-
ta cao do 0 deve ser tratada, portanto, como um caso especial.
Agora, observando a equa cao (1.3), podemos ver que para representar o n umero x naquela
forma, devemos armazenar em uma palavra quatro informa coes distintas: o sinal da mantissa, a
mantissa, o sinal do expoente e o expoente. Esses dois ultimos podem ser representados separada-
mente ou simultaneamente; nesse caso, pode-se usar complemento-de-2 (apesar dessa forma n ao
ser utilizada usualmente) ou deslocamento (biased exponent, como no padrao IEEE-754).
Tambem podemos observar que, como b
0
= 1 em M, n ao e necessario representa-lo; isso nos
permitir a economizar um bit da palavra que armazenar a x.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 13
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Essa representacao, tambem chamada de sistema de ponto-utuante, e denotada por
F = (, [ M[, [ E[) (1.4)
onde e a base na qual os n umeros estao expressos, [ M[ e [ E [ sao a quantidade de dgitos
utilizados para representar a mantissa e o expoente.
Para ns ilustrativos, vamos considerar uma palavra de 32 bits, dividindo-a em tres campos:
1. s, sinal do n umero ([ s [ = 1 bit );
2. E, o expoente do n umero, expresso em complemento-de-2 ([ E [ = 8 bits, por exemplo);
3. M, a mantissa do n umero, expressa na forma (0, 1b
1
b
2
b
3
. . .)
2
([ D[ = 23 bits, por exemplo);
Nesse caso, o n umero (11, 75)
10
= (0, 101111)
2
2
(+100)2
ser a expresso como
1 00000100 10111100000000000000000
1.3.2.4 Tratamento do zero
Num sistema de ponto-utuante em nota cao cientca normalizada, a representa cao do zero e um
caso especial, pois qualquer n umero x nesse sistema e tal que sua mantissa e um n umero M > 0.
Note que o padrao de bits
0 00000000 00000000000000000000000
n ao representa 0, mas sim 1 (uma vez que b
0
n ao e armazenado).
Temos, entao, duas op coes para representar o zero:
1. Representar explicitamente b
0
: com isso, reduzimos a precisao, pois o bit b
23
da mantissa
n ao poder a ser representado;
2. Escolher um certo valor de E o qual, quando o padr ao de bits de M for 00 . . . 00, ser a
considerado como representando o 0. Essa e a estrategia utilizada no padr ao IEEE-754,
Note que, em ambas opcoes, persiste a representacao dupla para o zero, +0 e 0; usualmente o
sinal e desconsiderado, nessa situa cao.
1.3.3 Caracteriza cao de uma representacao
A m de caracterizarmos uma representa cao de n umeros reais, seja em ponto-xo ou ponto-
utuante, podemos denir algumas quantidades, as quais s ao:
1. A precis ao, p, e a quantidade de bits disponvel para representar o n umero;
2. O menor n umero representavel, em modulo, MINR;
3. O maior n umero representavel, em modulo, MAXR;
4. O menor n umero representavel, , tal que 1+ ,= 1, tambem chamado de epsilon da m aquina
ou unidade de arredondamento da m aquina;
5. A menor separa cao possvel entre dois n umeros representaveis, ULP (do ingles units-in-the-
last-place).
Para um sistema de ponto-xo, teremos ent ao
1. p = [ e [ +[ d [;
2. MINR e obtido fazendo-se s = 0, e = 0 e colocando 1 no bit menos signicativo de d;
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 14
Introdu c ao ao Calculo Numerico Aritmetica no Computador
3. MAXR e obtido fazendo-se s = 0, e e e d tendo todos os seus bits iguais a 1;
4. MINR;
5. ULPMINR.
Usando-se uma palavra de 32 bits, dividida em campos e com 15 bits e d com 16 bits, podemos
calcular essas quantidades, conforme mostra a tabela 1.5.
p 31
MINR 2
16
0, 000015
MAXR (2
15
1) +

16
i=1
2
i
= 32767, 9999847412109375 2
15
2
16
ULP 2
16
Tabela 1.5: Valores caracterizadores de uma representa cao em ponto-xo.
J a para um sistema de ponto-utuante, essas quantidades s ao obtidas de forma diferente:
1. p = [ M[ + 1 (pois b
0
= 1 n ao e armazenado);
2. MINR, e obtido fazendo-se s = 0, E = 128 e M = 1/2.
3. MAXR, e obtido fazendo-se s = 0, E = 127 e M tendo todos os seus bits iguais a 1;
4. = 2
(p1)
, para arredondamento por corte, ou =
1
2
2
(p1)
= 2
p
, para arredondamento
por adi cao (ver 1.3.4);
5. ULP= (0, 00 . . . 01)
2
2
E
= 2
(p1)
2
E
= 2
E
, para qualquer n umero x na forma
M 2
E
.
Usando uma palavra de 32 bits dividida conforme expresso acima, essas quantidades tem os
seguintes valores, conforme mostra a tabela 1.6, onde foi calculado usando-se arredondamento
por corte. Comparando com a tabela 1.5, e f acil notar que a representacao em ponto-utuante
p 24
MINR 2
1
2
128
0, 146937 10
38
MAXR (

24
i=1
2
i
) 2
127
0, 170141 10
39
2
(241)
= 0, 119209 10
6
ULP 2
E
= 2
23+E
Tabela 1.6: Valores caracterizadores de uma representa cao em ponto-utuante.
oferece um intervalo muito maior de n umeros representaveis; alem disso, a separacao entre esses
n umeros e bem menor.
Na representacao em ponto-utuante, e importante estabelecer o intervalo de valores possveis
para o expoente. Os limites desse intervalo s ao o menor e o maior expoente, MINE e MAXE,
respectivamente, e sua deni cao depende de como os expoentes sao armazenados, conforme a
tabela 1.7.
Cabe, aqui, uma observa cao referente ao . Suponha que se desconhe cam as caractersticas do
sistema de ponto-utuante de um computador ou calculadora; nesse caso, e possvel estimar o ,
usando o algoritmo 1.3.1, o qual baseia-se na deni cao 1 + ,= 1:
sinal-e-modulo complemento-de-2
MINE
|E|1
1
|E|1
MAXE +
|E|1
1 +
|E|1
1
Tabela 1.7: Denicao dos valores do menor e maior expoentes num sistema de ponto-utuante.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 15
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Algoritmo 1.3.1 Estimacao de
proc macheps(output: )
s 1, 0
t 2, 0
while (t > 1, 0)
s 0, 5 s
t s + 1, 0
if (t 1, 0) then
2, 0 s
endif
endwhile
endproc
Por exemplo, executando-se esse algoritmo em uma calculadora HP-48SX, teremos como
resultado = 7, 2759576141 10
12
. O processador Saturn da HP-48SX utiliza 38 bits para
representar a mantissa e, portanto, o valor calculado para e uma boa aproxima cao.
1.3.4 Arredondamentos
Conforme salientado anteriormente, qualquer representa cao de um n umero real, num computador,
ser a inexata, salvo algumas poucas exce coes. Esse erro na representacao est a associado ` a base
utilizada para representa cao e ao fato de que, necessariamente, existe um n umero nito de bits
para armazenar o n umero.
Quanto ` a base, apesar de alguns fabricantes de computadores terem utilizado outras bases (16,
no caso do IBM 360 e 8, no Burroughs B-6700), em 1960-1970, tipicamente se utiliza a base
2, por ser mais f acil de se implementar os circuitos do processador, usando uma logica bin aria.
Dessa forma, temos de conviver com o problema de certos n umeros, com representa cao exata em
base decimal, nao poderem ser representados de forma exata em base binaria.
O outro problema a limita cao no tamanho da palavra para representar um n umero real
pode ser mitigada ao se aumentar a precis ao. Qualquer linguagem de programa cao cientca
oferece a possibilidade de se utilizar vari aveis em precis ao dupla e, algumas, em precisao qu adrupla,
i.e., utilizamos duas ou quatro palavras para representar um n umero real. Outra alternativa e
utilizar um processador cuja palavra contenha um maior n umero de bits: o recem-lancado Intel
Itanium tem uma palavra de 64 bits. Note a diferen ca sutil entre essas duas alternativas:
um programa que utilize vari aveis em precis ao simples permitir a se trabalhar com n umeros de
diferentes precis oes, se utilizarmos dois computadores com palavras de tamanhos diferentes. Por
exemplo, um programa em Fortran 90 com variaveis de precis ao simples tipo REAL tera uma
precis ao de p = 24 num computador que utilize o Intel Pentium II, mas, num Intel Pentium
4, o mesmo programa tera uma precisao de p = 53.
Assim, com as limitacoes impostas pela escolha da base e precisao da representacao, pode-se
perceber que existe um n umero nito de n umeros representaveis ou de m aquina; isso em marcante
contraste com os n umeros reais, cuja quantidade e innita. Mais ainda, entre quaisquer dois
n umeros reais, existem innitos outros n umeros; j a em qualquer das representacoes (ponto-xo ou
ponto-utuante), se tomarmos dois n umeros representaveis consecutivos, i.e., h a uma diferen ca de
1 no bit menos signicativo, nao h a qualquer outro n umero. Assim, se posicionarmos os n umeros
representaveis sobre a reta dos reais, veremos que existem espacos entre cada n umero representavel.
Para demonstrar isso, considere um computador hipotetico com uma palavra de 7 bits, e duas
representacoes de n umeros reais:
1. Ponto-xo: [ s [ = 1, [ e [ = 2, [ d [ = 4;
2. Ponto-utuante: [ s [ = 1, [ M[ = 5, [ E[ = 2.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 16
Introdu c ao ao Calculo Numerico Aritmetica no Computador
As guras 1.1 e 1.2 mostram a distribui cao dos n umeros de maquina ao longo da reta dos reais. Para
a representacao em ponto-xo, note que a separacao entre os n umeros representaveis e constante:
isso e explicado pois o valor de ULP e constante. Ja na representa cao em ponto-utuante, essa
separacao aumenta ` a medida que um n umero torna-se maior, ou seja, o expoente cresce. Isso pode
ser vericado na expressao para ULP, 2
E
, a qual depende do valor do expoente.
Outra caracterstica que pode ser observada e o menor intervalo de representacao no sistema
de ponto-xo, bem como uma regi ao de underow muito maior do que no sistema de ponto-
utuante.
Observando as guras 1.1 e 1.2, podemos vericar a existencia de espa cos entre os n umeros
representaveis. Suponha, ent ao, um n umero como, por exemplo, 2/3 = 0, 666 . . ., cuja repre-
sentacao em bin ario e (0, 101010. . .)
2
. Para ns de explana cao consideremos apenas um sistema
de ponto-utuante, apesar das observa coes a seguir serem v alidas para uma representa cao de
ponto-xo tambem.
Como 2/3 n ao tem representa cao nita em 24 bits, temos duas opcoes para armazena-lo:
1. (0, 101010 . . . 1010)
2
2. (0, 101010 . . . 1011)
2
o primeiro n umero e obtido descartando-se os bits b
24
b
25
. . .; j a o segundo obtem-se descartando-se
os bits em excesso e somando 1 a b
24
.
A situa cao que temos e, portanto, a seguinte: sempre que um n umero e nao-represent avel,
devemos escolher outro entre os dois n umeros de maquina, mais pr oximos daquele. Esses dois
n umeros s ao arredondamentos do n umero original, chamados de arredondamento por corte e por
adi c ao, correspondentes aos itens 1 e 2 acima, respectivamente.
Como estamos aproximando um n umero n ao-representavel por um outro, o mais pr oximo dele,
nossa representacao daquele n umero traz associada a si um erro, o qual pode ser medido de duas
formas. Quando um n umero real x e aproximado por um n umero x, o erro e x x. O erro absoluto
e denido como
[ x x [ (1.5)
e o erro relativo e dado por

x x
x

. (1.6)
Esse ultimo e o mais utilizado por permitir uma compara cao mais justa entre quantidades com
diferentes relacoes de magnitude
2
.
Vejamos formalmente, agora, quais os erros associados a esses arredondamentos. Chamemos
de x
c
e x
a
os n umeros de maquina correspondentes aos arredondamentos por corte e por adi cao,
respectivamente, de um n umero n ao-representavel x, os quais satisfazem a rela cao
x
c
< x < x
a
pois
x
c
= 0, 1010 . . . 1010[
x = 0, 1010 . . . 1010[1010 . . .
x
a
= 0, 1010 . . . 1011[
porem, x pode estar mais pr oximo de x
c
ou de x
a
, conforme mostrado na gura 1.3.
Escrevendo os n umeros x
c
e x
a
como
x
c
= (0, b
0
b
1
. . . b
22
b
23
)
2
2
E
(1.7)
x
a
=
_
(0, b
0
b
1
. . . b
22
b
23
)
2
+ 2
24
_
2
E
(1.8)
podemos calcular os erros absoluto e relativo associados aos dois arredondamentos como
2
Por exemplo, um erro de 1m na medicao da distancia entre a Terra e J upiter e pequeno; porem, um erro de
5cm numa incisao num corpo humano pode ser considerado bastante alto.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 17
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Figura 1.1: Distribui c ao de n umeros de m aquina em um sistema de ponto-xo; observe que a
dist ancia entre dois n umeros representaveis e a mesma.
Figura 1.2: Distribui c ao de n umeros de m aquina em um sistema de ponto-utuante; aqui, a
dist ancia entre dois n umeros representaveis aumenta ` a medida que se afastam do 0.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 18
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Figura 1.3: Um n umero n ao-represent avel x pode ser melhor representado por x
c
ou x
a
.
Aqui, consideramos um sistema de ponto-utuante com quatro dgitos na mantissa, com x
c
=
0, 6875 = (0, 1011)
2
e x
a
= 0, 75 = (0, 1100)
2
; no diagrama ` a esquerda, x = 0, 70625 =
(0, 10110100110011 . . .)
2
e, ` a direita, x = 0, 734375 = (0, 101111)
2
.
Erros associados ao arredondamento por corte Se o arredondamento por corte foi escolhi-
do, ent ao x encontra-se `a esquerda do ponto medio do intervalo [x
c
, x
a
]. Ent ao:
[ x x
c
[
1
2
[ x
a
x
c
[ =
1
2
[ (M + 2
24
) 2
E
M 2
E
[ = (1.9)
2
1
2
24
2
E
= 2
E25
(1.10)

x x
c
x


2
E25
M 2
E
=
2
25
M

2
25
2
1
= 2
24
.
.. M
1
2
(1.11)
Erros associados ao arredondamento por adi cao Se o arredondamento por adi cao foi esco-
lhido, ent ao x encontra-se `a direita do ponto medio do intervalo [x
c
, x
a
]. Por analogia,
escrevemos
[ x x
a
[ 2
E25
(1.12)

x x
a
x

2
24
(1.13)
Generalizando, podemos dizer que o erro relativo entre x e seu arredondamento x

x x

(1.14)
ou
x

= (x) = x(1 + ), [ [ , =
x

x
x
(1.15)
Uma medida muito utilizada para se determinar a qualidade numerica de um valor e o n umero
de dgitos signicativos, DIGSE. Aplicando logaritmos aos dois lados da expressao 1.14, temos
log
10

x (x)
x

log
10
(1.16)
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 19
Introdu c ao ao Calculo Numerico Aritmetica no Computador
e DIGSE e denido como
DIGSE(x, (x)) = log
10

x (x)
x

(1.17)
Para uma precis ao p = 24, log
10
2
24
7, ou seja, temos no mnimo sete casas decimais de
precis ao.
1.3.5 Opera coes aritmeticas de ponto-utuante
Na soma e subtra cao, os expoentes dos dois operandos devem ser iguais. Para tal, seleciona-se o
maior dos dois expoentes, e a mantissa e expoente do outro operando s ao ajustados de tal forma
a coincidir os expoentes. Por isso, as opera coes aritmeticas s ao sempre efetuadas com o dobro de
bits utilizados para armazenar os n umeros. Uma vez feito o ajuste dos expoentes, basta calcular
(a r
p
) (b r
p
) = (a b) r
p
A multiplica cao e a divis ao sao calculadas como
(a r
p
) (b r
q
) = ab r
p+q
(a r
p
) (b r
q
) = a b r
pq
Como essas operacoes sao efetuadas em v arias etapas, a cada parcela do processo, deslocam-se os
bits `a esquerda, de forma a sobrar bits menos signicativos; a cada deslocamento, o expoente deve
ser modicado adequadamente.
1.3.5.1 Erros em opera coes aritmeticas de ponto-utuante
Sempre que dois n umeros de ponto-utuante sofrerem o efeito de uma das quatro opera coes arit-
meticas, as seguintes etapas s ao efetuadas:
1. A opera cao e feita de forma correta, i.e., com o dobro do n umero de bits usados para
armazenar cada operando;
2. O resultado e normalizado;
3.

E feito o arredondamento, de forma que o resultado normalizado possa ser armazenado na
palavra.
O exemplo a seguir mostra por que deve-se efetuar a normaliza cao antes do arredondamento.
Exemplo 1.1 Considere x = 0, 45230 10
2
e y = 0, 25470 10
3
, em um sistema de ponto-
utuante com cinco casas na mantissa. O resultado de x y, sem normaliza cao, e
x y = 0, 0000011520
Se efetuarmos o arredondamento, sem normaliza-lo, o resultado ser a 0!
Como mostramos anteriormente, a representacao em ponto-utuante traz associada a si um
erro. O exemplo a seguir mostra, no entanto, que uma unica opera cao aritmetica simples tem um
erro que n ao excede a .
Exemplo 1.2 Considere x = 0, 3142610
3
e y = 0, 9257710
5
e, calculando as quatro operacoes
aritmeticas, temos:
x + y = 0, 9289100000 10
5
x y = 0, 9226274000 10
5
x y = 0, 2909324802 10
8
x y = 0, 3394579647 10
2
e, arredondando para cinco casas decimais, por adicao, temos
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 20
Introdu c ao ao Calculo Numerico Aritmetica no Computador
erro relativo
(x + y) 0, 92891 10
5
8, 5 10
6
< 10
5
(x y) 0, 92263 10
5
2, 3 10
6
< 10
5
(x y) 0, 29093 10
8
2, 8 10
6
< 10
5
(x y) 0, 33946 10
2
6, 0 10
6
< 10
5
onde 10
5
e o dessa representa c ao em cinco casas decimais.
De forma generica, podemos dizer que, se x e y sao n umeros representaveis, ent ao para uma
opera cao aritmetica qualquer ,
(x y) = (x y)(1 + ), [ [ (1.18)
e, se x e y n ao sao n umeros representaveis, ent ao
( (x) (y)) = (x(1 +
1
) y(1 +
2
)) (1 +
3
), [
1,2,3
[ (1.19)
A equa cao (1.19) nos diz que o erro associado ao encadeamento de operacoes aritmeticas pode
ser maior do que . Considere o exemplo abaixo:
(x(y + z)) = (x( (y + z))(1 +
1
), [
1
[ 2
24
= (x(y + z)(1 +
2
))(1 +
2
), [
2
[ 2
24
= x(y + z)(1 +
1
+
2
+
1

2
)
x(y + z)(1 +
1
+
2
)
.
.. [
1
+
2
[ 2
23
x(y + z)(1 +
3
), [
3
[ 2
23
,
1

2

3
Esse exemplo nos leva a supor que, caso a quantidade de opera coes aritmeticas a serem feitas
seja muito grande, entao o erro crescer a proporcionalmente. O teorema a seguir mostra que essa
hip otese e verdadeira.
Teorema 1.3.1 Sejam x
0
, x
1
, . . ., x
n
n umeros representaveis positivos, e a unidade de arre-
dondamento da maquina. Entao, o erro relativo de arredondamento ao se calcular

n
i=0
x
i
na
ordem natural, i.e. x
0
+ x
1
+ . . . + x
n
, e de no maximo (1 + )
n
1 ou, aproximadamente, n.
Prova: Seja S
k
= x
0
+ x
1
+ . . . + x
k
e (S
k
), as quais podem ser representadas pelas f ormulas
de recorrencia
_
S
0
= x
0
S
k+1
= S
k
+ x
k+1
, k 0
(1.20)
_
(S
0
) = x
0
(S
k+1
) = ( (S
k
) + x
k+1
), k 0
(1.21)
e chamemos de
k
e
k
aos erros relativos associados a (S
k
) e (S
k+1
),

k
=
(S
k
) S
k
S
k
(1.22)

k
=
(S
k+1
) ( (S
k
) + x
k+1
)
(S
k
) + x
k+1
(1.23)
de onde

k+1
=
(S
k+1
) S
k+1
S
k+1
=
( (S
k
) + x
k+1
)(1 +
k
) (S
k
+ x
k+1
)
S
k+1
.
.. (S
k
) = S
k

k
+ S
k
(por (1.22))
.
..
=
(S
k
(1 +
k
) + x
k+1
)(1 +
k
) (S
k
+ x
k+1
)
S
k+1
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 21
Introdu c ao ao Calculo Numerico Aritmetica no Computador
e, rearranjando os termos, obtemos

k+1
=
k
+
k
S
k
S
k+1
(1.24)
Como, por deni cao, S
k
< S
k+1
e [
k
[ ,
[
k+1
[ +[
k
[(1 + ) = + [
k
[, = 1 +
podemos entao escrever:
[
0
[ = 0
[
1
[
[
2
[ +
[
3
[ + ( + ) = + +
2

.
.
.
ou
[
n
[ + ( + ) = + +
2
+ . . . +
n1
=
= (1 + + . . . +
n1
) =
=

n
1
1
=
=
(1 + )
n
1

=
= (1 + )
n
1
e, pelo bin omio de Newton, tem-se
(1 + )
n
1 = 1 +
_
n
1
_
=
_
n
2
_

2
+ . . . 1 n.
1.4 Perda de dgitos signicativos
Apesar de erros de arredondamento serem inevitaveis e difceis de controlar, existem alguns tipos
de erros, em computa coes numericas, que podem ser evitados.
Por exemplo, suponha a subtra cao de dois n umeros x e y pr oximos entre si:
x = .3721478693
y = .3720230572
x y = .0001248121
Se o computador utilizado oferecer apenas cinco dgitos decimais na mantissa, teramos:
(x) = .37215
(y) = .37202
(x) (y) = .00013
Nesse caso, o erro relativo e bastante grande, da ordem de 4%.
1.4.1 Subtra cao de valores quase identicos
Como regra, devemos evitar situacoes que levem `a subtra cao de valores quase identicos - normal-
mente causados por express oes inadequadas do ponto de vista numerico.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 22
Introdu c ao ao Calculo Numerico Aritmetica no Computador
Exemplo 1.3 Considere a express ao
y
_
x
2
+ 1 1 (1.25)
Ora, para x < 1, teremos x
2
1 e, portanto,

x
2
+ 1 1. No entanto, se reescrevermos a
expressao acima como
y
_
_
x
2
+ 1 1
_
_

x
2
+ 1 + 1

x
2
+ 1 + 1
_
=
x
2

x
2
+ 1 + 1
(1.26)
eliminaremos esse problema. Por exemplo, em uma calculadora HP-48SX, se x = 10
6
, teremos:
y
_
0, 000001
2
+ 1 1 =
_
10
12
+ 1 1 = 1 1 = 0
y
0, 000001
2
_
0, 000001
2
+ 1 + 1
=
10
12

1 + 1
=
10
12
2
= 5 10
13
Por que, no exemplo acima, 10
12
+ 1 = 1? Ocorre que, se um dos operandos for menor do
que , entao ele sera desconsiderado (pois e o menor n umero represent avel tal que 1 + ,= 1).
Como (10
6
)
2
< (= 7, 275957614110
12
na HP-48SX), houve o cancelamento catastroco na
subtra cao.
Exemplo 1.4 Considere as expressoes para as duas razes de uma equacao de segundo grau,
x
1
=
b +

b
2
4ac
2a
(1.27)
x
2
=
b

b
2
4ac
2a
(1.28)
Se b
2
4ac, entao a express ao b
2
4ac envolve cancelamento e

b
2
4ac [ b [, de tal forma
que as expressoes sofrer ao cancelamento catastroco, dependendo do sinal de b.
Nesse caso, se multiplicarmos as equa coes acima por express oes do tipo
b +

b
2
4ac
b +

b
2
4ac
,
b

b
2
4ac
b

b
2
4ac
poderemos calcular as razes como segue:
1. Se b
2
4ac e b > 0 entao x
2
e calculado por (1.28) e
x
1
=
2c
b

b
2
4ac
=
c
ax
2
(1.29)
2. Se b
2
4ac e b < 0 entao x
1
e calculado por (1.27) e
x
2
=
2c
b +

b
2
4ac
=
c
ax
1
(1.30)
Por exemplo, seja a equa cao x
2
10
6
x + 1 = 0. Calculando x
1
e x
2
atraves das express oes
usuais, utilizando o software Maple com precis ao de 10 dgitos decimais, em um computador
Pentium II, temos:
x
1
=
10
6
+

10
12
4
2
=
10
6
+ 10
6
2
= 10
6
x
2
=
10
6

10
12
4
2
=
10
6
10
6
2
= 0
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 23
Introdu c ao ao Calculo Numerico Aritmetica no Computador
A raiz x
2
foi calculada de forma errada, pois sofreu cancelamento catastr oco. No entanto, se
recalculamo-la usando (1.30), temos
x
2
=
2
10
6
+

10
12
4
=
2
10
6
+ 10
6
= 10
6
Ao substituirmos esse valor na equa cao, teremos 10
12
1 +1, o qual pode ser considerado como
aproximando 0 para a precis ao utilizada. Note que, para esse exemplo particular, x
1
nao e raiz da
equacao, pois 10
12
10
6
10
6
+ 1 ,= 0.
1.4.2 Teorema sobre a perda de precisao
Uma questao que surge a partir dos exemplos anteriores e a seguinte: Quantos dgitos binarios
signicativos sao perdidos na subtra c ao xy quando x y? O teorema a seguir nos da limitantes
extremos para o n umero de dgitos bin arios perdidos nessa situa cao, baseado na rela cao [ 1y/x[,
o que nos d a uma medida de quao pr oximo x e de y.
Teorema 1.4.1 Se x e y s ao n umeros em ponto-utuante bin arios positivos, normalizados, tal
que x > y e
2
q
1
y
x
2
p
entao no maximo q e no mnimo p dgitos binarios signicativos s ao perdidos na subtra cao x y.
Prova. Considerando apenas o extremo superior da desigualdade, temos que x e y s ao da forma
x = r 2
n
,
_
1
2
r < 1
_
y = s 2
m
,
_
1
2
s < 1
_
Como x > y, por hip otese, o expoente de y dever a ser igualado ao de x antes de se realizar a
subtra cao (note que, como nao pode haver dgitos `a esquerda do ponto binario, sempre se faz com
que o menor n umero iguale seu expoente ao maior, introduzindo zeros imediatamente ` a direita do
ponto binario). Logo, y deve ser escrito como
y = (s 2
mn
) 2
n
e, da,
x y = (r s 2
mn
) 2
n
A mantissa desse n umero satisfaz a seguinte rela cao:
r s 2
mn
= r
_
1
s 2
m
r 2
n
_
= r
_
1
y
x
_
< 2
p
Para normalizar a representacao de x y, um deslocamento de ao menos p bits para a esquerda
e necessario. Entao, ao menos p zeros s ao inseridos ao nal da mantissa, efetivamente perdendo
p bits de precisao.
O exemplo a seguir ilustra a utiliza cao desse resultado.
Exemplo 1.5 Suponha uma mantissa de 5 dgitos decimais e que x = 0, 31457 10
5
e y =
0, 31453 10
4
e que os c alculos sejam efetuados com o dobro de dgitos. Ora, para calcular x y,
temos:
x = 0, 31457 00000 10
5
y = 0, 03145 30000 10
5
x y = 0, 28311 70000 10
5
(x y) = 0, 28311 10
5
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 24
Introdu c ao ao Calculo Numerico Aritmetica no Computador
como foi necess ario inserir um dgito 0 apos o ponto decimal de y, espera-se que se perder a um
dgito ao fazer a normaliza cao, como pode-se vericar pelo resultado. O erro relativo, no caso, e

0, 283117 10
5
0, 28311 10
5
0, 283117 10
5

= 2, 4724760435 10
5
, 10
5
o que demonstra que, efetivamente, houve perda de dgitos signicativos na subtracao.
Exemplo 1.6 Considere a express ao y = x senx. Como senx x para x 1, ocorrer a perda
de dgitos signicativos em y. Proponha uma forma alternativa para calcular y e estipule um
intervalo para x no qual pode-se utilizar a express ao original.
Solu cao: Usando a serie de Taylor para senx, temos:
y = x senx
= x
_
x
x
3
3!
+
x
5
5!

x
7
7!
+ . . .
_
=
_
x
3
3!

x
5
5!
+
x
7
7!
. . .
_
e, para x 0, podemos truncar a serie como segue, utilizando apenas quatro termos:
y = (x
3
/6)(1 (x
2
/20)(1 (x
2
/42)(1 x
2
/72)))
Usando o Teorema da Perda de Precis ao, podemos exigir que apenas um bit seja perdido se
escrevermos
1
senx
x

1
2
, x > 0,
Essa desigualdade e satisfeita se [ x[ 1, 9 e, nessa situacao, podemos usar a express ao original.
Para 0 < x < 1, 9, devemos usar a expressao baseada na serie truncada de Taylor, pois ela elimina
o problema.
Suponha x = 10
6
em uma calculadora HP-48SX. Ent ao, teremos:
y = 10
6
sen(10
6
) = 0, 000001 0, 000001 = 0
y = 1, 66666666667 10
19
1.5 Condicionamento de um problema
O condicionamento de um problema diz respeito a quao exato podemos resolve-lo em uma dada
precis ao de ponto-utuante, independentemente do algoritmo utilizado para resolve-lo.
Seguindo a deriva cao em [12], e supondo que desejamos avaliar uma fun cao y = f(x), j a
sabemos que qualquer opera cao de ponto-utuante acarretar a a existencia de um erro. Logo, o
que efetivamente calcula-se e uma aproximacao
(y) = (f( (x)))
mas, por simplicidade, assumimos que (f) = f. Podemos calcular, ent ao, o erro relativo em y
como
(y) y
y
=
f( (x)) f(x)
(x) x

x
f(x)

(x) x
x
.
O termo
f( (x))f(x)
(x)x
e uma aproximacao para f

(x). Assim,
(y) y
y

f
(x)
(x) x
x
(1.31)
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 25
Introdu c ao ao Calculo Numerico Aritmetica no Computador
onde

f
(x) =
[ x[ [ f

(x) [
[ f(x) [
(1.32)
a qual e chamada de n umero de condi cao de f em x. Esse fator e que mede o quanto os erros de
arredondamento em x sao amplicados ao se avaliar f(x).
Ent ao, para se avaliar o n umero de dgitos corretos em (y), aplicamos logaritmos aos dois
membros da equacao (1.31),
log
10
_
(y) y
y
_
log
10
_
(x) x
x
_
log
10

f
(x)
Note que log
10
_
(x)x
x
_
e aproximadamente igual a 7 para p = 24 e a 16 para p = 53.
1.6 Computa coes estaveis e instaveis
Um processo numerico e dito inst avel se pequenos erros ocorridos num passo sao ampliados nos
passos seguintes, degradando a exatid ao do processo.
Considere, por exemplo, a seq uencia de n umeros dada por
_
_
_
x
0
= 1
x
1
=
1
3
x
n+1
=
13
3
x
n

4
3
x
n1
, n 1
a qual gera os n umeros
x
n
=
_
1
3
_
n
pois x
0
=
1
3
0
= 1, x
1
=
1
3
1
=
1
3
. Para n = m + 1, temos:
x
m+1
=
13
3
x
m

4
3
x
m1
=
13
3
_
1
3
_
m

4
3
_
1
3
_
m1
=
_
1
3
_
m1
_
13
3

4
3
_
=
_
1
3
_
m+1
Utilizando a forma de recorrencia acima para gerar os n umeros, teremos:
n xn (1/3)
n
erro relativo
0 1,000000000000000000000 1,000000000000000000000 0,000000000000000000000
1 0,333333333333333310000 0,333333333333333310000 0,000000000000000000000
2 0,111111111111110940000 0,111111111111111100000 0,000000000000001498801
3 0,037037037037036258000 0,037037037037037028000 0,000000000000020795865
4 0,012345679012342514000 0,012345679012345677000 0,000000000000256154473
5 0,004115226337435884400 0,004115226337448558300 0,000000000003079755201
6 0,001371742112432145600 0,001371742112482852900 0,000000000036965598551
7 0,000457247370624785240 0,000457247370827617560 0,000000000443594296061
8 0,000152415789464541850 0,000152415790275872500 0,000000005323140444549
9 0,000050805260179967644 0,000050805263425290837 0,000000063877696404890
10 0,000016935074827137338 0,000016935087808430279 0,000000766532366861972
11 0,000005644977344304949 0,000005645029269476759 0,000009198388410596376
12 0,000001881468722471661 0,000001881676423158920 0,000110380660937172300
13 0,000000626394671637267 0,000000627225474386307 0,001324567931256533500
14 0,000000205751947132609 0,000000209075158128769 0,015894815175089418000
15 0,000000056398875391618 0,000000069691719376256 0,190737782101085550000
16 -0,000000029940802813135 0,000000023230573125419 2,288853385213039700000
17 -0,000000204941979379076 0,000000007743524375140 27,466240622556484000000
Os valores acima demonstram que o algoritmo e instavel, e qualquer erro presente em x
n
e
multiplicado por 13/3 em x
n+1
. Portanto, h a a possibilidade de que o erro existente em x
3
(da
ordem de 10
15
) seja propagado para x
17
por um fator (13/3)
14
10
9
; ou seja, o erro em x
17
devido unicamente a x
3
pode ser de 10
4
, que n ao e desprezvel. Alem disso, os erros devido aos
demais n umeros x
4
, x
5
, . . . , x
k
sao propagados para x
17
por fatores da forma (13/3)
k
.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 26
Introdu c ao ao Calculo Numerico Aritmetica no Computador
1.7 Desastres causados por erros aritmeticos no computador
Esse captulo apresentou os conceitos ligados ` a computa cao numerica; dentre estes, certamente o
conceito de erro associado a qualquer calculo numerico e o mais importante. Como nao h a como
evit a-los, e necessario que o programador e/ou analista numerico saiba como trata-los de forma
que a ocorrencia deles nao leve a falhas catastr ocas. Infelizmente, isso nem sempre e levado em
conta, no dia-a-dia, e desastres ocorrem, como os dois que citamos a seguir.
1.7.1 Falha do sistema de msseis Patriot
Durante a Guerra do Golfo, em 1991, o Iraque lan cou in umeros msseis terra-terra Scud (de
fabrica cao sovietica) contra Israel e Ar abia Saudita. A m de se protegerem contra esses ataques,
as tropas norte-americanas instalaram baterias de msseis terra-ar Patriot, os quais haviam
sido projetados no incio da decada de 70 para destrurem msseis cruzeiro e aeronaves sovieticas
(voando a uma velocidade media de 2Mach), numa eventual guerra entre a OTAN e o Pacto de
Varsovia.
Uma bateria de msseis Patriot consiste de uma unidade de controle computadorizada; de
um radar de deteccao; e de ate 6 lan cadores qu adruplos de msseis. A unidade de controle dispoe
de um rel ogio que marca o tempo em decimos de segundo, armazenados em uma palavra inteira de
24 bits; os calculos de determina cao das janelas de conrmacao e de engajamento (regi oes no ceu
dentro do qual o possvel alvo deve ser detectado pelo radar para que possa os msseis Patriot
sejam lan cados) sao feitos em ponto xo, tambem com 24 bits.
No dia 25 de fevereiro de 1991, uma bateria Patriot instalada em Dharan, na Ar abia Saudita,
deixou de interceptar um mssil Scud que se aproximava. Como resultado, 28 soldados norte-
americanos foram mortos devido ` a explosao do mssil Scud.
Os resultados da investiga cao, de acordo com [11], indicaram que os msseis Patriot nao
engajaram o Scud (apesar dos radares haverem detectado o mssil iraquiano) devido a um erro
numerico de arredondamento. O tempo medido pelo rel ogio da unidade de controle e multiplicado
por 1/10 para representar o tempo em segundos, e armazenado em 23 bits, no formato de ponto
xo; ocorre que 1/10 e um n umero que n ao tem representa cao nita em bin ario:
(1/10)
10
= (0, 0001 1001 1001 1001 1001 1001 1001 100 . . .)
2
Como a palavra usada para armazenar o rel ogio e de 24 bits, o erro e de aproximadamente
(0, 0000 0000 0000 0000 0000 0001 100 . . .)
2
(0, 0000 0009 5)
10
.

E obvio que, ` a medida que o tempo de opera cao da bateria de msseis aumenta, maior sera
o erro no tempo calculado. Como esse tempo e usado para se calcular as janelas de detec cao e
engajamento de um alvo, isso ira causar um deslocamento da janela para baixo (i.e., a altitude na
qual se espera que o alvo aparecer a na pr oxima varredura do radar da bateria ser a menor do que
a que ele se encontra). Com isso, o mssil continuar a trafegando em dire cao ao seu alvo, porem
n ao ser a detectado e, portanto, os msseis Patriot n ao ser ao disparados.
Ocorre que, devido ` as caractersticas do sistema Patriot, a m de se maximizar as chances
de derrubada do mssil atacante, este deve encontrar-se no meio da janela de engajamento, a
qual tem um comprimento de 274m. No dia 11 de fevereiro de 1991 (duas semanas antes da falha
do sistema), vericou-se que apos 8h de opera cao contnua, a janela sofria um deslocamento de
55m; por extrapola cao, ap os 20h de uso contnuo, esse deslocamento seria de 137m, e a partir de
ent ao, n ao seria mais possvel detectar um mssil atacante.
Quando ocorreu a falha, a bateria que deveria ter engajado o Scud estava operando conti-
nuamente por 100h! Dessa forma, o erro acumulado era de
0, 000000095 100 3600 10 = 0, 34s.
Um mssil Scud viaja a uma velocidade terminal de 1.676m/s; em 0, 34s, ele percorre a dist ancia
de 569, 84m. O deslocamento da janela de deteccao, ap os 100h de opera cao, era de 687m. Logo,
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 27
Introdu c ao ao Calculo Numerico Aritmetica no Computador
n ao havia como o Scud ser detectado, j a que a janela encontrava-se a uma altitude inferior ` a
dele.
1.7.2 Explosao do foguete Ariane 5
No dia 4 de junho de 1996, o primeiro foguete Ariane 5, construdo pela Agencia Espacial Europeia,
foi destrudo pelo sistema de controle de falha apenas 40s ap os o lan camento da sua base em
Khourou, na Guiana Francesa. O Ariane 5 havia sido desenvolvido ap os 10 anos de trabalho, a
um custo de 7 bilh oes de dolares. O custo do foguete, bem como da carga util transportada, era
de 500 milh oes de dolares.
Os resultados da investigacao, ap os duas semanas do incidente, indicaram que o problema
encontrava-se no software de guiagem inercial. Um n umero em ponto-utuante, armazenado
numa palavra de 64 bits, e que representava a velocidade horizontal em rela cao `a plataforma de
lan camento, foi convertido para um n umero inteiro, no formato sinal-e-magnitude, de 16 bits.
Como a velocidade era superior a 32.768 (o maior n umero representavel em 15 bits), ocorreu uma
falha na conversao e o programa deixou de funcionar.
1.8 Exerccios
Exerccio 1.1 Considere um sistema de ponto-utuante, F = (2, 24, 8), no qual os n umeros
apresentam uma mantissa tal que 1 M < 2. Determine os valores caracterizadores desse
sistema.
Exerccio 1.2 Suponha que alguem recebeu a tarefa de projetar o sistema de ponto-utuante
de um computador com uma palavra de 16 bits, para uma aplica cao envolvendo a medicao de
temperaturas pr oximas a zero. Qual o tamanho dos campos M e E que seria mais indicado?
Justique a sua resposta.
Exerccio 1.3 Mostre que, normalmente, [ (xy)z] ,= [x (yz)]; escreva um exemplo e um
contra-exemplo.
Exerccio 1.4 Se no maximo 2 bits de precisao podem ser perdidos ao se calcular y =

x
2
+ 11,
qual a restricao que deve ser imposta a x?
Exerccio 1.5 Calcule os valores de x para os quais f(x) = sen(x) pode ter um grande n umero
de condicao.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha 28

You might also like