Lógica Matmática Computacional - Sistma d Ponto Flutuant SISTEM DE PONTO FLUTUNTE s máquinas utilizam a sguint normalização para rprsntação dos númros: 1d dn * B ± 0d L ond 0 di (B 1), para i = 1,,, n, com d 1 0, 1 Um númro nsta forma é dnominado númro d ponto flutuant normalizado; 0 L é chamada mantissa (alguns d1d dn autors considram o sinal ±); B é a bas; d i, com i = 1,,, n, são os dígitos (ou algarismos) da mantissa; n é o númro d algarismos significativos (númro máximo d dígitos usados na rprsntação do númro); é o xpont 1, dnotam os limits infrior suprior, rspctivamnt, do xpont Obsrv qu o zro não pod sr rprsntado dsta forma O conjunto formado plo zro por todos os númros m notação d ponto flutuant é chamado Sistma d Ponto Flutuant na bas B com n algarismos significativos, dnotado por F(B, n, 1, ) Exmplo 1: Vjamos os sistmas d ponto flutuant d algumas máquinas antigas: HP 5, F(10,9,-98,100); Txas SR 50 HP 41C, F(10,10,-98,100); Txas SR 5, F(10,1,-98,100); IBM 360/370, F(16,6,-64,63); Burroughs B 6700, F(8,13,-51,77) Comparando com sua calculadora ou su microcomputador, stas máquinas podm sr ditas obsoltas, no ponto d vista do sistma d ponto flutuant? Exmplo : Vjamos dois númros binários com oito algarismos significativos: n 1 = 011100110 *, qu rprsnta a quantidad 3,59375 (m bas dz); n = 011100111 *, qu rprsnta a quantidad 3,609375 (m bas dz) Obsrv qu, no sistma d rprsntação utilizado, n 1 n são dois númros conscutivos, ou sja, não podmos rprsntar nnhum outro númro qu tnha valor intrmdiário Portanto, por xmplo, a quantidad 36 não tm rprsntação xata nst sistma, sndo rprsntada por n 1 ou n, o qu grará um rro, dnominado Erro d rrdondamnto ssim, nquanto os númros rais podm sr rprsntados por uma rta contínua, m notação d ponto flutuant somnt podmos rprsntar pontos discrtos da rta ral Propridads: Vjamos algumas propridads dos númros do sistma d ponto flutuant F = F(B, n, 1, ): 1
Lógica Matmática Computacional - Sistma d Ponto Flutuant a) m = 01* B 1 é o mnor númro não-nulo, m módulo, m F; b) M = 0(B 1)(B 1) L(B 1) * B é o maior númro do sistma d ponto flutuant F; 1444444 3 n vzs n 1 1 c) cardinalidad (númro d lmntos) d F é (B 1)B ( + 1) + 1; (xpliqu porqu) d) mantissa stá contida no intrvalo [01, 1); ) S x F, ntão x F Exrcício 1: Encontr a cardinalidad, o maior o mnor lmnto positivo dos sistmas d ponto flutuant do xmplo 1 nalisando os rsultados, dcida qual sistma d ponto flutuant é o mlhor, justificando sua rsposta Exmplo 3: Sja o sistma d ponto flutuant F = F(, 3, -1, ) Como a bas é dois, os dígitos possívis são 0 ou 1 ssim, como os númros dst sistma dvm tr até três dígitos, as mantissas podm sr: 0100, 0101, 0110 0111 Ests númros rprsntam, rspctivamnt, as quantidads 1, 5/4, 3/ 7/4 E mais, os xponts da bas possívis são 1, 0, 1 ou Portanto, na tabla abaixo scrvmos ( m ngrito) todos os númros positivos do sistma d ponto flutuant, já colocados na bas dz: Exponts Mantissas 0100 0101 0110 0111-1 1/ 1/4 5/16 3/8 7/16 0 1 1/ 5/8 3/4 7/8 1 1 5/4 3/ 7/4 4 5/ 3 7/ Exrcício : Dsnh sobr o ixo ral todos os númros positivos do sistma d ponto flutuant do xmplo 3 Podmos obsrvar qu os númros m notação d ponto flutuant não stão uniformmnt distribuídos no intrvalo [0, 7/] O msmo ocorrrá no intrvalo simétrico [-7/, 0] No ntanto, xistm difrnts zonas d distribuição uniform (por xmplo, 1/4, 5/16, 3/8, 7/16), nas quais notamos qu os númros possum o msmo xpont Mais, ntr xponts sucssivos da bas n = xistm uma quantidad constant d númros d ponto flutuant, dada por B 1 (B 1) 4 E mais, a tabla nos informa a cardinalidad do sistma d ponto flutuant, pois la é igual ao dobro do númro d lmntos positivos (por causa dos ngativos) mais um (o zro) Estas informaçõs ajudam na
Lógica Matmática Computacional - Sistma d Ponto Flutuant vrificação da propridad (c) acima Obsrvamos, também, qu nsta tabla ncontramos o maior o mnor lmnto positivo (com fundo cinza) inda pod-s obsrvar qu há uma rgião ntr o mnor lmnto positivo d F o zro, simtricamnt, ntr o maior lmnto ngativo o zro, dnominada Rgião d Undrflow s rgiõs situadas ants do mnor lmnto ngativo após o maior lmnto d F são dnominadas Rgiõs d Ovrflow Estas rgiõs são dnotadas dadas, rspctivamnt, plos intrvalos = ( m,0) (0,m) R O = (, M) (M, + ) No xmplo acima, = ( 1/ 4,0) (0,1/ 4) R O = (, 7 / ) (7 /, + ) Exrcício 3: Encontr todos os lmntos positivos (m bas dz), a cardinalidad, a rgião d ovrflow a rgião d undrflow para o sistma d ponto flutuant F(3,,-,) Rprsntação m um Sistma d Ponto Flutuant: Como podmos rprsntar númros m um sistma d ponto flutuant? Como uma máquina nxrga os númros qu stão nas rgiõs d undrflow ou ovrflow d su sistma? Notação: x é rprsntado por y x y Obsrv qu x y não é o msmo qu x = y Os númros ncontrados na rgião d ovrflow são nxrgados pla máquina como infinitos, ou sja, o qu chamamos d problma d ovrflow Os númros qu stão na rgião d undrflow são vistos pla máquina como zro, ou sja, x RU x 0 S ncontramos m uma máquina a mnsagm problma d ovrflow, é norm a possibilidad d trmos a divisão por um númro na rgião d undrflow, ou sja, para la, a divisão por zro Quanto a outro númro x, ou x prtnc ao sistma d ponto flutuant, ou x é rprsntado por um lmnto do sistma d ponto flutuant Em gral sta rprsntação é fita d uma das duas formas a sguir Para xplica-las, considrmos dois númros conscutivos do sistma d ponto flutuant, x < x, d tal forma qu x < x < x a) Rprsntação por Cort ou Truncamnto: Esta rprsntação m F(B, n, 1, ) é obtida considrando-s apnas os n primiros algarismos, na bas B, da mantissa do númro Em outras palavras, um númro x é rprsntado plo maior númro m ponto flutuant qu sja mnor qu x, ou sja, T x x (atnção na notação) Obsrv qu sta forma d rprsntação pod grar um grand rro d arrdondamnto Para tanto basta qu x stja muito próximo d b) Rprsntação por rrdondamnto: Nsta rprsntação, x é rprsntado plo lmnto do sistma d ponto flutuant qu stivr mais próximo dl, diminuindo ao máximo o rro d x 3
Lógica Matmática Computacional - Sistma d Ponto Flutuant x + x arrdondamnto ssim, s x < x <, ntão x x (atnção na notação) Caso x + x contrário, s x < x, ntão x x Esta rprsntação m F(B, n,1, ) é obtida, no caso d bass pars, considrando-s os n primiros algarismos, na bas B, da mantissa do númro, mas dvmos olhar o próximo dígito (dígito n+1) S l for maior ou igual qu B/, ntão aumntamos o n-ésimo dígito m uma unidad Caso contrário, s mnor qu B/, ntão mantmos o n-ésimo dígito O caso d bass ímpars não srá abordado aqui Não s dv confundir rprsntação por truncamnto rprsntação por arrdondamnto com rro d truncamnto rro d arrdondamnto O rro d truncamnto é o rro dvido ao método numérico aplicado (por xmplo, xpansão truncada d uma séri, linarização d uma função) O rro d arrdondamnto é o rro dvido a rprsntação d um númro ral m um sistma d ponto flutuant Exmplo 4: Em F(10, 4, -98, 100), as quantidads 0333333, 01395, 0348446 0666 são rprsntadas por cort, rspctivamnt, como 03333, 0139, 03484 06666 (obsrv qu apnas considramos os primiros dígitos do númro) são rprsntados por arrdondamnto, rspctivamnt, por 03333, 0140, 03484 06667 (obsrv qu quando o próximo dígito é maior qu 5, o último algarismo é aumntado d uma unidad) Exmplo 5: O númro ral 9/8 = 115 é scrito na bas dois como 01001* 1 Portanto, l não prtnc ao sistma F(, 3, -1, ) No ntanto, sua rprsntação por cort é 0100* 1 (igual a 1 na bas dz) por arrdondamnto é 0101* 1 (igual a 1,5 na bas 10) Obsrv qu o rro d arrdondamnto m qualqur das duas rprsntaçõs é o msmo, mas isto, m gral, não ocorr Por outro lado, os númros rais x = 5/4 y = 3/8 prtncm a st sistma, mas sua soma, x + y = 13/8, stá fora do sistma d ponto flutuant m qustão Exrcício 4: Rprsnt os númros abaixo, por arrdondamnto por cort, no sistma d ponto flutuant F(6,4,-,3): a) 00055555; b) 134515; c) 00001345; d) 0055555; ) 13053 adição a multiplicação na aritmética d ponto flutuant não possui as msmas propridads do conjunto dos númros rais Elas não são associativas nm distributivas Isto s dv ao fato da rprsntação sr fita após cada opração Para vrmos isto, sja o xmplo abaixo 4
Lógica Matmática Computacional - Sistma d Ponto Flutuant Exmplo 6: Considrmos um sistma d ponto flutuant com B = 10 n = 3 uma rprsntação por arrdondamnto Vjamos as sguints opraçõs: (446 + 94) + 504 = 135 + 504 = 1854 185 46 + (94 + 504) = 46 + 148 46 + 143 = 1856 186, ou sja, a adição não é associativa Exrcício 5: Trabalhando como no xmplo 6 acima, no msmo sistma d ponto flutuant na msma forma d rprsntação, vrifiqu qu: a) (410 499) 00 410 (499 + 00) b) (013/ 797) *849 c) 159*(499 (013*849) / 797 + 00) (159* 499) + (159* 00) Exrcício 6: Raliz todos os cálculos do xmplo 6 do xrcício 5 acima, mas usando rprsntação por truncamnto Os itns (b) (c) do xrcício 5 acima nos mostram, rspctivamnt, qu o produto não é associativo, nm distributivo m rlação a adição m um sistma d ponto flutuant Sndo assim, os rros d arrdondamnto introduzidos a cada opração influm na solução obtida plo método numérico aplicado Consquntmnt, métodos numéricos matmaticamnt quivalnts podm forncr rsultados difrnts Rspostas d alguns xrcícios: 3) Os lmntos positivos são: 1/7, 4/81, 5/81, /7, 7/81, 8/81, 1/9, 4/7, 5/7, /9, 7/7, 8/7, 1/3, 4/9, 5/9, /3, 7/9, 8/9, 1, 4/3, 5/3,, 7/3, 8/3, 3, 4, 5, 6, 7, 8 O conjunto tm x30+1 = 61 lmntos = ( 1/ 7,0) (0,1/ 7) R O = (, 8) (8, + ) 4) Por arrdondamnto: a) 00055555 001; b) Problma d Ovrflow; c) 00001345 0; d) 0055555 01; ) 13053 1305 Por truncamnto: a) 00055555 0005555; b) Problma d Ovrflow; c) 00001345 0; d) 0055555 005555; ) 13053 1305 5) a) (410 499) 00 410, b) (013/ 797) *849 131, c) 159 * (499 + 00) 797, 410 (499 + 00) 400 (013*849) / 797 130 (159 * 499) + (159 * 00) 796 5