E1:
Considere um computador hipotético
(formato normalizado:
, com
):
a) Calcule o número de elementos representáveis, incluindo o zero.
b) Determine as regiões de underflow e overflow
c) Considere o polinômio:
Calcule o valor de
nesta máquina, indicando os cálculos realizados para cada termo do polinômio.
a) Calcule o número de elementos representáveis, incluindo o zero.
b) Determine as regiões de underflow e overflow
c) Considere o polinômio:
Passo 1
O enunciado pede três coisas sobre a máquina de ponto flutuante
(formato normalizado
, com
):
- (a) Calcular o número de elementos representáveis, incluindo o zero.
- (b) Determinar as regiões de underflow e overflow (ou seja, os limites mínimo e máximo representáveis e as regiões onde números não podem ser representados).
- (c) Calcular
em aritmética desta máquina para o polinômio , indicando os cálculos realizados para cada termo do polinômio (ou seja, mostrar como cada multiplicação / adição é feita e arredondada ao formato com dígitos).
Informações dadas que vamos usar explicitamente:
- base
; - precisão
dígitos na mantissa (ou seja, mantissa do tipo ); - expoente mínimo
e máximo ; - formato normalizado (não estamos considerando números subnormal/denormalizados);
- valor a avaliar
(usar representação da máquina para ).
Passo 2
Breve explicação didática sobre como contar números representáveis e sobre o formato normalizado (para você ficar confiável na prova):
- Em ponto flutuante normalizado os números não nulos têm a forma
, com e . Ou seja, a mantissa tem escolhas para e escolhas para os três dígitos restantes. - Para cada mantissa possível e para cada expoente
entre e (inclusive) há um número positivo; temos também o correspondente negativo. Além disso existe o número , que é tratado separadamente. - Fórmula geral: número de elementos não nulos =
. Soma-se pelo zero.
Passo 3
Cálculo do item (a) seguindo a fórmula do passo anterior:
-
então mantissas possíveis (não nulas). - Número de expoentes disponíveis =
. - Portanto número de elementos não nulos =
. - Somando o zero, número total representável
.
Passo 4
Explicação didática sobre underflow e overflow (o que são e como se obtêm os limiares):
- O maior número positivo normalizado ocorre quando a mantissa é a máxima possível
(quatro dígitos) e o expoente é . Assim
- O menor número positivo normalizado ocorre quando a mantissa é a menor com
, isto é , e o expoente é . Assim
- Underflow: valores não nulos com
não podem ser representados como números normalizados; se não houver suporte a subnormais eles serão “flush to zero” (zerados). - Overflow: valores com
não podem ser representados e causam overflow (normalmente erro ou representação de infinito).
Passo 5
Aplicando os valores da máquina para obter os limiares numéricos:
-
dá
-
dá
- Portanto explicitação:
- Região de underflow (números não nulos que NÃO podem ser representados normalizados):
(serão perdidos se não houver denormais). - Região de overflow:
.
- Região de underflow (números não nulos que NÃO podem ser representados normalizados):
Passo 6
Preparo para o item (c): como a máquina armazena
e as regras de arredondamento que usaremos:
- A representação normalizada com
para (que tem 3 dígitos significativos) é
ou seja, estamos acrescentando um zero final para completar os
dígitos da mantissa; este
é exatamente representável na máquina.
- Regra de arredondamento que aplicamos: cada operação aritmética (multiplicação, adição) é seguida de arredondamento ao número da máquina mais próximo com
dígitos (arredondamento para o mais próximo; em caso de empate arredonda-se para somar ao dígito par — aqui não precisamos do detalhe dos empates, pois os casos que aparecerão têm um dígito de corte diferente de 5 simples). - Sempre quando eu mostrar um número intermediário vou:
- escrever o valor exato (quando disponível),
- normalizá-lo na forma
, - aplicar arredondamento para obter os 4 dígitos e mostrar o valor armazenado.
Passo 7
Cálculo de
(primeiro termo a calcular para o polinômio):
- Valor exato:
- Normalizando:
- Mantendo
dígitos: olhamos os quatro primeiros dígitos da mantissa e o próximo dígito é (maior que 5), portanto arredondamos para cima:
- Valor armazenado na máquina:
Passo 8
Cálculo de
usando a máquina (fazendo multiplicações com arredondamento após cada operação):
- Preferimos calcular
como , ou seja usamos o quadrado armazenado e armazenado . - Multiplicação (valores usados):
. - Produto exato desses valores:
. - Normalizando:
- Arredondando para 4 dígitos de mantissa (olhando o quinto dígito):
(o próximo dígito é então sobe). - Valor armazenado:
Observação didática: se tivéssemos usado o
exato (27,4576) o
exato seria
, mas como a máquina já armazenou
obtemos um produto diferente
antes do arredondamento — essa diferença mostra como arredondamentos intermediários propagam.
Passo 9
Cálculo do termo
na máquina:
- Usamos
e multiplicamos por . - Produto exato:
. - Normalizando:
- Arredondando para 4 dígitos:
(porque o quinto dígito é , sobe). - Valor armazenado:
Passo 10
Cálculo do termo
na máquina:
- Usamos
. - Produto exato:
. - Normalizando:
já tem 4 dígitos na mantissa
, então não há arredondamento.
- Valor armazenado:
Passo 11
O termo constante
é exatamente representável com
(completamos zeros):
Passo 12
Agora somamos os termos na ordem natural
, arredondando após cada adição (isso é o que a máquina faz se implementarmos a soma sequencial):
-
Soma
. - Cálculo exato com esses armazenados:
. - Normalizando e preenchendo 4 dígitos:
(colocamos 4 dígitos ). - Arredondamento: já tem 4 dígitos, permanece
(ou escrevemos ). - Portanto
.
- Cálculo exato com esses armazenados:
-
Soma
. - Cálculo exato com os armazenados:
. - Normalizando:
(mantissa ). - Assim
(ou ).
- Cálculo exato com os armazenados:
-
Soma final
. - Cálculo exato com os armazenados:
. - Normalizando:
(mantissa ). - Resultado final armazenado:
- Cálculo exato com os armazenados:
Passo 13
Comparação didática com o valor exato (para você entender o porquê do erro):
- Valor exato (em precisão infinita) de
: -
, -
, -
, - soma:
, - somando
: , - subtraindo
: .
-
- Então o valor exato é
enquanto a máquina computou
. A diferença vem de cancelamentos e arredondamentos intermediários (catastrophic cancellation): os termos
e
são grandes e quase se cancelam, amplificando erros de arredondamento.
Resposta
(a)
(b) Região de underflow (não-nulos não representáveis normalizados):
. Região de overflow:
.
(c)