Sejam os seguintes números: x=0.5289, y=0.8012 e z=0.6024, e considere um sistema de ponto flutuante com mantissa de 4 dígitos e base decimal. Mostre que:
(a) x(y+z) neq x times y+x times z

Passo 1

Beleza, o enunciado diz que temos
x=0.5289, y=0.8012 e z=0.6024
num sistema de ponto-flutuante decimal com mantissa de 4 dígitos.
A questão é mostrar que, nesse sistema,
x,(y+z)neq xtimes y + xtimes z
O tema aqui é aritmética de ponto-flutuante: você precisa saber como normalizar números, quantos dígitos manter na mantissa (aqui, 4) e o critério de arredondamento (“round to nearest”). A partir do próximo passo, a gente faz as contas direitinho, sempre arredondando quando ultrapassar 4 dígitos na mantissa.

Passo 2

Primeiro calcula (y+z)float = 1.404 (mantissa = 4 dígitos: 1.404) em aritmética exata e depois aplica o arredondamento a 4 dígitos:
y+z = 0.8012 + 0.6024 = 1.4036.
Isso tem 5 dígitos significativos (14036), mas só podemos guardar 4. O quinto dígito é 6 (≥5), então a gente “sobe” o quarto dígito:
í

Passo 3

Agora multiplica x por esse resultado e depois arreda pra 4 dígitos:
Exato:
0.5289 times 1.404 = 0.7425756
Isso tem 7 casas decimais. Mantendo só 4, olhamos o quinto dígito (7 ≥ 5) e subimos:
x,(y+z)float = 0.7426

Passo 4

Agora faz separadinho:
a) 0.5289 times 0.8012 = 0.42375468
(xy)float = 0.4238
Arredonda pra 4 dígitos (quinto dígito=5, então sobe):
0.5289 times 0.6024 = 0.31860936
b) (xz)float = 0.3186
(xy)float + (xz)float = 0.4238 + 0.3186 = 0.7424
Arredonda (quinto dígito=0, mantém):
c) Soma os dois resultados já arredondados:

Passo 5

Comparando:
x,(y+z)float = 0.7426 e (xy)float + (xz)float = 0.7424,
logo são diferentes.

Resposta

Em ponto-flutuante de 4 dígitos decimais não vale a distributiva:
x,(y+z) = 0.7426 neq 0.7424 = x,y + x,z

Exercícios relacionados