Como os unums podem emular o zero negativo do IEEE?


9

Atualmente, estou lendo "O Fim do Erro - Unum Computing", de John Gustafson ( Youtube ). O que ainda não tenho certeza é como os casos tratados no IEEE por zero assinado negativamente são tratados com unums.

Portanto, antes de tudo, os unums permitem representar certos valores exatos (da mesma forma que os pontos flutuantes) e, adicionalmente, permitem representar os intervalos abertos que se situam entre os valores exatos (incluindo -∞ e exact). Portanto, a linha do número real completa é representada pela alternância de valores precisos e intervalos abertos:

-∞, (-∞, -maxreal), -maxreal, ... -smallsubnormal, (-smallsubnormal, 0),

0,

(0, smallsubnormal), smallsubnormal, ... maxreal, (maxreal, ∞), ∞

Dessa maneira, os valores excepcionais (na tradição IEEE), como subfluxo e excesso, são apenas alguns intervalos abertos. Em outras palavras: essas condições anteriormente especiais agora se transformam em casos regulares.

IEEE -∞ corresponde à união de {-∞} e (-∞, -maxreal).

E zero assinado agora pode ser os intervalos (-smallsubnormal, 0) e (0, smallsubnormal).

No entanto, 1 / (- smallsubnormal, 0) agora é (-∞, -maxreal) e não -∞ sozinho. Enquanto 1/0 é ∞.

O que ainda estou hesitando sobre isso é que no IEEE -0 e +0 se comparam iguais. Mas eles não fazem unum. Parece que o mapeamento não é 100%. Então, eu me pergunto se existem casos em que a diferença pode aparecer ((e se esses casos são realmente relevantes)).

(Estou ciente de Por que é zero negativo importante? , Usos para ponto flutuante valor negativo )


11
Por que você acha que o mapeamento precisa ser 1 para 1? As razões indicadas nas perguntas que você vinculou são um problema com unums, então por que fazer um zero negativo?
Ordous

@ Ordous: Porque (Ch.18.1, p.257) "Unums são um superconjunto de carros alegóricos. Os carros alegóricos são simplesmente unidades para os quais o ubit é zero etc.etc." o que tudo (inclusive guess) sugere que se pode mais ou menos (e como começo) traduzir as coisas literalmente. Estou perfeitamente ciente de que uma tradução literal não tira o máximo proveito dos unums.
false

5
É bastante difícil argumentar contra uma citação sem ter o livro em mãos. No entanto, seus slides na apresentação do IEEE declararam como uma vantagem da computação unum: "Não há necessidade de underflow". Portanto: não há necessidade de zero negativo, pois ele é precisamente insuficiente. Talvez você possa estender esse sistema para incluir um zero negativo, mas não há razão para fazê-lo. Honestamente 0 negativo no IEEE é inconsistente com a matemática .
Ordous

@ Ordous: Underflow é tratado pelo intervalo aberto (-smallsubnormal, 0) e seu equivalente positivo. Portanto, essas são as coisas mais próximas de -0 e +0. Mas esse intervalo pode realmente agir como se?
false

8
O underflow não é "tratado" aqui, simplesmente não existe . 0 negativo é um problema no IEEE e esse padrão está tentando corrigi-lo junto com outras coisas. Você não pode e não deve equiparar -0 e +0, mas como no IEEE a diferença é 0, eles devem ser iguais. Esse paradoxo não tem boa solução. Em Unums eles fazem ter uma diferença, portanto, eles não podem ser iguais. O objetivo principal do sistema é corrigir problemas no IEEE, mas isso significa que é necessariamente inconsistente com ele. Essa é uma das inconsistências mencionadas. E a razão pela qual existe um sistema interno proposto para usar padrões antigos em seu livro.
Ordous

Respostas:


3

Muito tempo para um comentário, portanto, escreva-o como resposta ...

O problema com o IEEE é que temos três casos para diferenciar, mas apenas duas representações para estes:

  • valor negativo, valor absoluto pequeno demais para representar - isso é representado pelo IEEE -0.0 e pode ser facilmente mapeado para (-smallsubnormal,0)
  • valor exatamente nulo, representado pelo IEEE 0.0, mapeado para 0
  • valor positivo pequeno demais para representar; este também possui representação IEEE 0.0 , mas deve ser mapeado para (0, +smallsubnormal).

O problema agora não é o zero negativo, mas que não podemos diferenciar se um IEEE 0.0 é o segundo ou terceiro caso! Em outras palavras: a função de mapeamento de UNUM para IEEE não é bijetiva - e nunca será, como para qualquer outro valor IEEE, também, nunca sabemos se é o exato ou o intervalo!

Portanto, acho absolutamente bom mapear -0,0 para (-smallsubnormal,0), e precisamos decidir se o IEEE 0.0 deve ser mapeado 0ou possivelmente melhor (0, +smallsubnormal). Pessoalmente, cuido do primeiro, mas isso não é muito autoritário ...

Quanto à comparação com o IEEE (-0,0 sendo igual a 0,0): nunca se deve comparar a igualdade exata de qualquer maneira (operador C ou C ++: ==), mas apenas para o valor absoluto da diferença ser menor do que algum limite apropriado. Esse problema é eliminado apenas parcialmente, mesmo com UNUMS, como agora podemos comparar a igualdade exata, se o bit u não estiver definido, mas com ele sendo definido, ainda não sabemos realmente ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.