A maior rede de estudos do Brasil

Como calcular ponto flutuante.

Alguém poderia realizar um cálculo como exemplo de ponto flutuante no padrão IEEE 754?

2 resposta(s)

User badge image

Rômulo C Ar

Há mais de um mês

Normas de cálculo com números deponto flutuante e suas formas de armazenamento, de acordo com as recomendações do padrão IEEE 754.

À seguir, exemplos de cálculos nas 4 operações aritméticas básicas:

ADIÇÃO E SUBTRAÇÃO

Seja F(10, 4, –50, 49), δ = 50, com um dígito de guarda.

Se X = 436.7 e Y = 7.595 obter a soma ( X+Y).

Obs.: Para todas operações, faremos uma análise da precisão do resultado obtido, através dos erros absoluto e relativo.

X = 0 | 5 3 | 4 3 6 7

Y = 0 | 5 1 | 7 5 9 5

1) e1 – e2 = 53 –51 = 2 (deslocamento de dois dígitos do menor, no caso Y)

Y = 0 | 5 1 | 7 5 9 5 ≡ Y = 0 | 5 3 | 0 0 7 5 9

2) Expoente do resultado: e = 5 3

3) Adição das mantissas: 4 3 6 7 (0) + 0 0 7 5 (9) = 4 4 4 2 (9) , onde o valor entre parênteses é o dígito de guarda.

4) Normaliza o resultado: Não há necessidade, pois d1 = 4 ≠ 0.

5) Arredonda: 4 4 4 2 (9) f => 4 4 4 3

6) Verifica underflow/overflow: e – 50 = 53 − 50 = 3 < 49. Não há.

Resultado:

X + Y = 0 | 5 3 | 4 4 4 3 ou X + Y = 0.4443 * 10 (elevado à 53-50) = 444.3

Análise do resultado:

Erro absoluto = | 444.295 – 444.3 | = 0.01

Erro Relativo = 0.01 / 444.295 = 1.13 x 10 (elevado à −5)

MULTIPLICAÇÃO

Para os mesmos dados do exemplo anterior obter o produto ( X * Y ).

1) Expoente: e = 53 + 51 = 104

2) Multiplicação das mantissas: (4 3 6 7) * (7 5 9 5) = (3 3 1 6 7 3 6 5), considerando quatro dígitos de guarda.

3) Normalizar o valor do resultado. Ajustar expoente (e−δ) = 104 – 50 = 54.

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

5) Verifica underflow/overflow: e – 50 = 54 − 50 = 4 < 49. Não há.

Resultado:

X * Y = 0 | 5 4 | 3 3 1 7 ou X * Y = 0.3317 * 10 (elevado à 54–50) = 3317

Análise do resultado:

Erro absoluto = | 3316.7365 – 3317 | = 0.2635

Erro Relativo = 0.2635 / 3316.7365 = 7.9445 x 10 (elevado à −5) <= (Obs.: mesma precisão da adição.)

DIVISÃO

Para os mesmos dados dos exemplos anteriores obter a divisão ( X / Y ).

1) Expoente: e = 53 – 51 = 2

2) Divisão das mantissas: (4 3 6 7) * (7 5 9 5) = (5 7 4 9 8 3 5 4), considerando quatro dígitos de guarda.

3) Normalizar o valor do resultado. Ajustar expoente (e+δ) = 2 + 50 = 52.

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

5) Verifica underflow/overflow: e –50 = 52−50 = 2 < 49. Não há.

Resultado:

X / Y = 0 | 5 2 | 5 7 5 0 ou X / Y = 0.5750 * 10 (elevado à 52–50) = 57.50

Análise do resultado:

Erro absoluto = | 57.49835418 – 57.50 | = 0.001645819

Erro Relativo = 0.001645819 / 57.49835418 = 2.8623 x 10 (elevado à −5)

Normas de cálculo com números deponto flutuante e suas formas de armazenamento, de acordo com as recomendações do padrão IEEE 754.

À seguir, exemplos de cálculos nas 4 operações aritméticas básicas:

ADIÇÃO E SUBTRAÇÃO

Seja F(10, 4, –50, 49), δ = 50, com um dígito de guarda.

Se X = 436.7 e Y = 7.595 obter a soma ( X+Y).

Obs.: Para todas operações, faremos uma análise da precisão do resultado obtido, através dos erros absoluto e relativo.

X = 0 | 5 3 | 4 3 6 7

Y = 0 | 5 1 | 7 5 9 5

1) e1 – e2 = 53 –51 = 2 (deslocamento de dois dígitos do menor, no caso Y)

Y = 0 | 5 1 | 7 5 9 5 ≡ Y = 0 | 5 3 | 0 0 7 5 9

2) Expoente do resultado: e = 5 3

3) Adição das mantissas: 4 3 6 7 (0) + 0 0 7 5 (9) = 4 4 4 2 (9) , onde o valor entre parênteses é o dígito de guarda.

4) Normaliza o resultado: Não há necessidade, pois d1 = 4 ≠ 0.

5) Arredonda: 4 4 4 2 (9) f => 4 4 4 3

6) Verifica underflow/overflow: e – 50 = 53 − 50 = 3 < 49. Não há.

Resultado:

X + Y = 0 | 5 3 | 4 4 4 3 ou X + Y = 0.4443 * 10 (elevado à 53-50) = 444.3

Análise do resultado:

Erro absoluto = | 444.295 – 444.3 | = 0.01

Erro Relativo = 0.01 / 444.295 = 1.13 x 10 (elevado à −5)

MULTIPLICAÇÃO

Para os mesmos dados do exemplo anterior obter o produto ( X * Y ).

1) Expoente: e = 53 + 51 = 104

2) Multiplicação das mantissas: (4 3 6 7) * (7 5 9 5) = (3 3 1 6 7 3 6 5), considerando quatro dígitos de guarda.

3) Normalizar o valor do resultado. Ajustar expoente (e−δ) = 104 – 50 = 54.

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

5) Verifica underflow/overflow: e – 50 = 54 − 50 = 4 < 49. Não há.

Resultado:

X * Y = 0 | 5 4 | 3 3 1 7 ou X * Y = 0.3317 * 10 (elevado à 54–50) = 3317

Análise do resultado:

Erro absoluto = | 3316.7365 – 3317 | = 0.2635

Erro Relativo = 0.2635 / 3316.7365 = 7.9445 x 10 (elevado à −5) <= (Obs.: mesma precisão da adição.)

DIVISÃO

Para os mesmos dados dos exemplos anteriores obter a divisão ( X / Y ).

1) Expoente: e = 53 – 51 = 2

2) Divisão das mantissas: (4 3 6 7) * (7 5 9 5) = (5 7 4 9 8 3 5 4), considerando quatro dígitos de guarda.

3) Normalizar o valor do resultado. Ajustar expoente (e+δ) = 2 + 50 = 52.

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

5) Verifica underflow/overflow: e –50 = 52−50 = 2 < 49. Não há.

Resultado:

X / Y = 0 | 5 2 | 5 7 5 0 ou X / Y = 0.5750 * 10 (elevado à 52–50) = 57.50

Análise do resultado:

Erro absoluto = | 57.49835418 – 57.50 | = 0.001645819

Erro Relativo = 0.001645819 / 57.49835418 = 2.8623 x 10 (elevado à −5)

Essa pergunta já foi respondida por um dos nossos estudantes