Você está na página 1de 15

Padro IEEE 754 para Aritmtica Binria de Ponto Flutuante

Gerardo Valdisio Rodrigues Viana Universidade Estadual do Cear Departamento de Estatstica e Computao e-mail: valdisio@uece.br

Resumo - O padro IEEE 754 [1], recomendado pelos institutos ANSI (American National Standard Institute) e IEEE (Institute of Electrical and Eletronic Engineers), refere-se s normas a serem seguidas pelos fabricantes de computadores e construtores de compiladores de linguagens cientficas, ou de bibliotecas de funes matemticas, na utilizao da aritmtica binria para nmeros de ponto flutuante. As recomendaes so relativas ao armazenamento de dados numricos, mtodos de arredondamento, tratamento de casos de underflow e overflow, formas de realizao das quatro operaes aritmticas bsicas e implementao de funes nas linguagens de programao. A grande vantagem destes procedimentos permitir uma maior portabilidade dos softwares numricos e criao de novos tipos de dados a fim de resolver problemas conhecidos como mal condicionados que contribuem para que a computao numrica fornea resultados errneos, mesmo quando so utilizados mtodos comprovadamente eficazes. Neste trabalho conceituamos como os nmeros reais so armazenados, quais seus limites de grandeza e preciso; de que forma verificada e tratada uma ocorrncia de underflow ou overflow; quais os mtodos de arredondamento utilizados; qual a configurao especial de bits recomendada e como devem ser realizadas as operaes aritmticas com nmeros de ponto flutuante. Apresentamos estas informaes, acompanhadas de exemplos, a fim de dar subsdios a todos interessados na rea de matemtica computacional. Palavras-Chave: Aritmtica Binria. Forma de Armazenamento de Nmeros. Mtodos de Arredondamento. Normalizao. Ponto Flutuante. Preciso e Grandeza.

1 INTRODUO
O padro IEEE 754 (ANSI /IEEE Std 754-1985, New York, 1985 - IEEE Standard for Binary Floating-Point Arithmetic) contm normas [1,5] a serem seguidas pelos fabricantes de computadores e construtores de Softwares no tratamento da aritmtica binria para nmeros de ponto flutuante relativo ao armazenamento, mtodos de arredondamento, ocorrncia de underflow e overflow, alm, claro, da realizao das operaes aritmticas bsicas. Existe tambm o padro IEEE 854 (ANSI/IEEE Std 854-1987, New York, 1987 - IEEE Standard for Radix-Independent Floating-Point Arithmetic) que tem os mesmos objetivos [2], porm, relativos a uma padronizao para uma base independente genrica, para aqueles que utilizam outra base diferente da binria. Entre as recomendaes dos padres IEEE 754 e IEEE 854 existem consideraes sobre a implementao de funes nas linguagens de programao, de modo que a maioria dos fabricantes atuais de computadores (Hardware) e construtores de compiladores de linguagens cientficas ou de bibliotecas de funes matemticas (Software) seguem estas recomendaes. Um tratamento especial tambm citado para o clculo do produto escalar de dois vetores feito atravs da multiplicao, seguida imediatamente da adio com um nico arredondamento feito no fim da sequncia de operaes [3]. A grande vantagem deste procedimento permitir uma maior portabilidade dos softwares numricos e criao de novos tipos de dados a fim de tratar problemas conhecidos como mal condicionados [8], descritos a seguir.

2 JUSTIFICATIVA
Problemas de mal-condicionamento contribuem para que a computao numrica fornea resultados errneos, mesmo quando so utilizados mtodos de comprovada eficcia [6]. Por exemplo, a soma (1 + 10 ) 10
50 50

retorna o resultado errado 0 (zero)

em qualquer mquina programada para trabalhar com tipos convencionais de preciso simples, dupla ou estendida, isto porque haveria necessidade de uma preciso equivalente a no mnimo cinqenta casas decimais para que o resultado correto 1 (um) fosse obtido (no tpico adiante, relativo s operaes com nmeros de ponto flutuante, indicado como a adio realizada para um melhor entendimento deste problema). Para superar algumas destas dificuldades a computao moderna combina recursos de hardware, como utilizao de dgitos de guarda, implementados nos tradutores de linguagem, alm da tcnica conhecida como verificao dos resultados que consiste basicamente em [6]: i) computao do resduo, substituindo a soluo encontrada na expresso matemtica do problema; se o resduo for pequeno a soluo considerada boa; ii) repetir a mesma operao em preciso dupla, esperando que os resultados obtidos coincidam com os de preciso simples e iii) repetir a computao com um ou mais dados ligeiramente modificados, esperando que uma pequena variao na soluo indique a estabilidade do algoritmo e bom condicionamento do problema.

3 ARITMTICA DE PONTO FLUTUANTE


3.1 CONCEITO Seja F (b, t, m, M) um sistema de ponto flutuante (Floating-Point System) que representa um subconjunto dos nmeros reais, onde b 2 a base de representao, t 1 a preciso, e m e M so respectivamente o menor e maior expoente. O subconjunto F R contm nmeros reais, de ponto flutuante, da forma X = (1) . b .(0.d1d2d3.....dt), onde s sinal ( 0 se positivo e 1 se negativo), e o expoente ( m e M , com m < 0, M > 0 e | m | M ) e di so dgitos da mantissa na base-b ( 0 di b1, i, 1 i t ).
s e

f = 0.d1d2d3.....dt

chamada de mantissa, sendo que o dgito inicial 0 (zero) e o

ponto decimal no so armazenados. Na representao IEEE 754 o ponto decimal, implicitamente, est entre os dgitos d1 e d2 , o que permite o armazenamento de mais um dgito da mantissa. Exemplo: Considerando F (2, 8, 4, 3) e sendo X e Y, dois nmeros da forma: X= 0 010 11100110 Y= 0 010 11100111

X= (1)0. 22.(0.11100110) = (11.100110)2 = (3.59375)10 Y= (1)0. 22.(0.11100111) = (11.100111)2 = (3.609375)10 Observe que X e Y so dois nmeros consecutivos neste sistema de representao, sendo que o nmero decimal 3.6 no teria representao exata. 4

3.2 NORMALIZAO O primeiro dgito (d1) diferente de zero para assegurar a unicidade de representao, e manter sempre a preciso mxima suportada pela mantissa. Esta forma a chamada forma normalizada. O valor zero no pode ser normalizado e tem representao especial, com mantissa nula (todos dgitos iguais a zero) e expoente o menor possvel (m1). 3.3 RELAES

Para todo sistema da forma F(b,t,m,M) so vlidas as seguintes relaes [7]: i) Variao da mantissa: ii) Menor nmero positivo: iii) Maior nmero positivo: iv) Nmero de elementos: v) psilon da mquina: 1/b f < 1 = bm1 = (1 bt ) . bM | F | = 2.(b1).b .(Mm+1) + 1 = (0.5).b1t
t1

(psilon) um valor tal que ( 1 + ) = 1; e normalmente chamado de zero da mquina, apesar de ser um valor positivo, porm, muito pequeno. Este valor pode ser obtido atravs do algoritmo: EPS = 1 repita EPS = EPS/2 EPS1 = EPS + 1 at EPS1 = 1

Resultados obtidos num microcomputador 486DX (processador Intel 80x87, 66 Mhz), com utilizao dos compiladores Fortran 90 e Turbo Pascal 7.0:

i) Em FORTRAN Preciso simples: Preciso dupla: ii) Em PASCAL Tipo REAL: Tipo DOUBLE: Tipo EXTENDED = 0.45474735089 E12 = 0.111022302462516 E15 = 0.5421010862427522 E19 = 0.5421011 E19 = 0.5421010862427522 E19

Observe que somente para o tipo EXTENDED em PASCAL se consegue encontrar a ordem de grandeza correta do zero da mquina, o que no ocorre para a linguagem FORTRAN que a linguagem cientfica mais recomendada para a computao numrica.

3.4 OCORRNCIA DE UNDERFLOW E OVERFLOW Seja X um nmero real e X uma aproximao de X, ento, sabendo que o menor nmero positivo do sistema de representao e o maior nmero positivo, tem-se: i) Se | X | > ; um caso de overflow, que considerado uma situao irremedivel, e, conseqentemente, o programa deve ser abortado; ii) Se 0 < | X | < , um caso de underflow que considerado como X = 0. Esta prtica pode invalidar resultados, por isso chamado de underflow destrutivo. 6

iii) Se < | X | < , com X necessitando de d dgitos de mantissa, causa um arredondamento para X contendo t dgitos, sendo descartados ( d t ) dgitos usando um dos mtodos de arredondamento descritos a seguir. 3.5 MTODOS DE ARREDONDAMENTO Os mtodos de arredondamento [7] so utilizados para padronizar a forma de truncamento dos dgitos, em funo do tamanho fixo da mantissa, por ocasio de seu aramazenamento. Para cada um dos mtodos descritos abaixo apresentamos um exemplo onde foi considerado que d=5 e t=3. i) Em direo ao zero (para o valor imediatamente anterior, ou menor, para positivos e imediatamente posterior, ou maior, para negativos) ;

Y = 0.34521 ii)

Em direo a + (para o maior valor relativo);

Y = 0.34521 iii)

Em direo a (para o menor valor relativo);

Y = 0.34521 iv)

Para o mais prximo, com opo para a aproximao prximo par em caso de empate (este mtodo o mais recomendado pela IEEE 754).

Y = 0.3458 Z = 0.3455 T = 0.3445

Exemplos:

X = 0.3452

Exemplos:

X = + 0.34521

Exemplos:

X = + 0.34521

Exemplos:

X = + 0.34521

X = + 0.345 Y = 0.345

X = + 0.346 Y = 0.345

X = + 0.345 Y = 0.346

X = 0.345 Y = 0.346 Z = 0.346 T = 0.344

4 PADRO IEEE 754 PARA PONTO FLUTUANTE


A base de representao recomendada a binria ( b = 2 ). As operaes devem ser executadas em preciso estendida com uso de dgitos de guarda e expoente deslocado (). O uso do expoente deslocado, tambm chamado caracterstica, tem por objetivo eliminar o sinal do expoente, por exemplo, se m= 127 e M=127, ( deve ser igual a 127, de forma que a variao de expoente seria de 0 a 254. Considerando o formato padro para nmeros de ponto flutuante: s sinal e expoente f = d1d2d3.....dt Mantissa

O padro IEEE 754 recomenda os seguintes nmeros de bits, de acordo com a preciso usada. A expresso ( N = s + e + t ), corresponde ao tamanho da palavra em bits. i) Preciso Simples: s = 1, e = 8, f = 23 (+ 1 escondido), N = 32 bits. X = ( 1.f * 2e ) = 127

ii) Preciso Simples Estendida: s = 1, e 11, f 32 , N 43 bits. X = ( 0.f * 2e ) = 127

iii) Preciso Dupla: s = 1, e = 11, f = 52 (+ 1 escondido), N = 64 bits. X = ( 1.f * 2e ) = 1023

iv) Preciso Dupla Estendida: s = 1, e 15, f 64 , N 79 bits. X = ( 0.f * 2e ) = 1023

A maioria dos atuais processadores ( Intel, Motorola, Sparc, entre outros ) possui uma pastilha co-processadora de ponto flutuante [10] obedecendo este padro. Eles 8

utilizam 3 formatos: preciso simples ( 32 bits ), preciso dupla ( 64 bits ) e estendida ( 80 bits ).

5 CONFIGURAO ESPECIAL DE BITS - PADRO IEEE 754


Alguns resultados de operaes aritmticas no so suportadas pela mquina, em virtude de diviso por zero, overflow etc; desta forma, eles so representadas de forma especial. Nos casos seguintes, o item i corresponde a uma representao especial para o 0 (zero); o item ii um nmero com menor expoente possvel, e os itens iii e iv so excees, invariavelmente, intratveis. Expoente i) ii) iii) iv) e = m1 e = m1 e = M+1 e = M+1 Frao f=0 f0 f=0 f 0 Significado 0 0.f * 2m NaN ( Not a Number )

O padro IEEE 754 permite nmeros desnormalizados, que so nmeros com expoente igual a (m 1) e zeros no incio da mantissa. Interpretao:

Nmero Normalizado 1.f1f2f3 ...ft x 2e

Nmero Desnormalizado 0.f1f2f3 ...ft x 2m

Obs: fi = 0

ou

fi = 1 9

6 OPERAES ARITMTICAS
Dados dois nmeros X e Y representados na forma: (1) . b .(0.d1d2d3.....dt) so definidas as seguintes regras para as operaes aritmticas:
s e

6.1 ADIO E SUBTRAO i) Escolher o nmero com menor expoente entre X e Y e deslocar sua mantissa para a direita um nmero de dgitos igual diferena absoluta entre os respectivos expoente; ii) Colocar o expoente do resultado igual ao maior expoente entre X e Y; iii) Executar a adio/subtrao das mantissas e determinar o sinal do resultado; iv) Normalizar o valor do resultado, se necessrio; v) Arredondar o valor do resultado, se necessrio e vi) Verificar se houve overflow/underflow.

Exemplo: Seja F(10, 4, 50, 49), = 50, com um dgito de guarda. Se X = 436.7 e Y = 7.595 obter a soma ( X+Y ). Obs.: Para todas operaes, faremos uma anlise da preciso do resultado obtido, atravs dos erros absoluto e relativo [4]. X= 0 53 4367 Y= 0 51 7595

10

i) e1 e2 = 53 51 = 2 (deslocamento de dois dgitos do menor , no caso Y) Y= 0 51 7595 Y= 0 53 0075 9

ii) Expoente do resultado: e = 5 3 iii) Adio das mantissas: 4 3 6 7 (0) + 0 0 7 5 (9) = 4 4 4 2 (9) , onde o valor entre parnteses o dgito de guarda. iv) Normaliza o resultado: No h necessidade, pois d1 = 4 0.

vi) Verifica underflow/overflow: e 50 = 53 50 = 3 < 49. No h. Resultado: X+Y= 0 53 4443 ou X+Y= 0.4443 * 105350 = 444.3

Anlise do resultado: Erro absoluto = | 444.295 444.3 | = 0.01 Erro Relativo = 0.01 / 444.295 = 1.13 x 105 6.2 MULTIPLICAO i) Colocar o expoente do resultado igual soma dos expoentes de X e Y; ii) Executar a multiplicao das mantissas e determinar o sinal do resultado; iii) Normalizar o valor do resultado, se necessrio; iv) Arredondar o valor do resultado, se necessrio e v) Verificar se houve overflow/underflow.

v) Arredonda: 4 4 4 2 (9)

f=4443

11

Exemplo: Para os mesmos dados do exemplo anterior obter o produto ( X * Y ). i) Expoente: e = 53 + 51 = 104 ii) Multiplicao das mantissas: (4 3 6 7) * (7 5 9 5) = (3 3 1 6 7 3 6 5), considerando quatro dgitos de guarda. iii) Normalizar o valor do resultado. Ajustar expoente (e) = 104 50 = 54.

v) Verifica underflow/overflow: e 50 = 54 50 = 4 < 49. No h.

Resultado: X*Y= 0 54 3317 ou X*Y= 0.3317 * 105450 = 3317

Anlise do resultado: Erro absoluto = | 3316.7365 3317 | = 0.2635 Erro Relativo = 0.2635 / 3316.7365 = 7.9445 x 105 (mesma preciso da adio). 6.3 DIVISO i) Colocar o expoente do resultado igual diferena dos expoentes de X (dividendo) e de Y (divisor); ii) Executar a diviso das mantissas e determinar o sinal do resultado; iii) Normalizar o valor do resultado, se necessrio; iv) Arredondar o valor do resultado, se necessrio e v) Verificar se houve overflow/underflow.

12

iv) Arredondar o valor do resultado: (3 3 1 6 7 3 6 5)

(3 3 1 7).

Exemplo: Para os mesmos dados do exemplo anterior obter a diviso ( X / Y ). i) Expoente: e = 53 51 = 2 ii) Diviso das mantissas: (4 3 6 7) * (7 5 9 5) = (5 7 4 9 8 3 5 4), considerando quatro dgitos de guarda. iii) Normalizar o valor do resultado. Ajustar expoente (e+) = 2 + 50 = 52.

v) Verifica underflow/overflow: e 50 = 52 50 = 2 < 49. No h.

Resultado: X/Y= 0 52 5750 ou X/Y= 0.5750 * 105250 = 57.50

Anlise do resultado: Erro absoluto = | 57.49835418 57.50 | = 0.001645819 Erro Relativo = 0.001645819 / 57.49835418 = 2.8623 x 105

7 CONCLUSO
Esperamos que este trabalho tenha atingido todos seus objetivos. Como pretendamos, mostramos as normas de clculo com nmeros de ponto flutuante e suas formas de armazenamento, de acordo com as recomendaes do padro IEEE 754. Como leitura complementar indicamos especialmente as referncias [3,5,7,8]. Em relao ao tratamento da preciso dos mtodos numricos, decorrentes, ou no, das 13

iv) Arredondar o valor do resultado: (5 7 4 9 8 3 5 4)

(5 7 5 0).

operaes aritmticas conveniente consultar livros de Clculo Numrico [4,6,9], bem como, para observar de que forma so implementadas a potenciao ( xy ) e funes matemticas bsicas ( sen, cos, log, arctg, e ). Estas funes so resolvidas por sries de potncias, as quais utilizam apenas as operaes aritmticas bsicas na forma descritas no item 6.
x

REFERNCIAS BIBLIOGRFICAS
[1] American National Standards Institute / Institute of Electrical and Electronics Engineers: IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std 7541985, New York, 1985. [2] American National Standards Institute / Institute of Electrical and Electronics Engineers: IEEE Standard for Radix-Independent Floating-Point Arithmetic, ANSI/IEEE Std 854-1985, New York, 1987. [3] BOHLENDER, G., What do we need beyond IEEE Arithmetic ?, Computer

Arithmetic and Self-Validating, Numerical Methods, Academic Press Inc., 1990. [4] DORN, W.S. e D.D. MCCRACKEN, Clculo Numrico com estudo de casos em Fortran IV, Editora Campus e Editora USP, Rio de Janeiro, 1968. [5] FIGUEIRDO, M.A.B., Um pacote de Aritmtica de Mltipla Preciso, Tese de Mestrado em Informtica na UFPB, rea de concentrao: Cincia da Computao, Campina Grande, 1989. [6] FORSYTHE, G.E., M.A. MALCOLM e C.B. MOLER, Computer Methods for

Mathematic Computations, Prentice-Hall Inc., Englewood Cliffs, New Jersey, 1977. 14

[7] HATTORI, M.T. e B.C.N QUEIROZ, Acredita no Computador ?, Departamento de Sistemas e Computao, UFPB, Campina Grande, 1994, trabalho no publicado. [8] HATTORI, M.T. e B.C.N QUEIROZ, Mtodos e Software Numricos,

Departamento de Sistemas e Computao, UFPB, Campina Grande, 1994, trabalho no publicado. [9] HUMES, A.F.P.C., I.S.H. de MELO, L.K. YOSHIDA e W.T. MARTINS, Noes de Clculo Numrico, Editora McGraw-Hill, So Paulo, 1984. [10] TANENBAUM, A. S., Organizao Estruturada de Computadores, 3 Edio, Prentice/Hall do Brasil, Rio de Janeiro, 1992.
a

15

Você também pode gostar