Unums, IEEE'nin negatif sıfırını nasıl taklit edebilir?


9

Şu anda John Gustafson ( Youtube ) tarafından yazılan "Hata Sonu - Unum Computing" okuyorum . Hala emin olmadığım , IEEE'de negatif olarak sıfırlanmış davaların nasıl ele alındığıdır.

Bu nedenle, her şeyden önce, unums belirli kesin değerleri (kayan noktalara benzer şekilde) temsil etmeye izin verir ve ek olarak kesin değerler (tam -∞ ve ∞ dahil) arasında bulunan açık aralıkları temsil etmeye izin verir. Böylece, tam gerçek sayı satırı, değişen hassas değerler ve açık aralıklar ile temsil edilir:

-∞, (-∞, -maxreal), -maxreal, ... -küçük subnormal, (-küçük subnormal, 0),

0,

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

Bu şekilde (IEEE geleneğinde) taşma ve taşma gibi istisnai değerler sadece bazı açık aralıklardır. Başka bir deyişle: eski özel koşullar şimdi düzenli vakalara dönüşüyor.

IEEE's -∞, {-∞} ve (-∞, -maxreal) birliğine karşılık gelir.

Ve şimdi imzalı sıfır aralıkları (-smallsubnormal, 0) ve (0, smallsubnormal) olabilir.

Ancak, 1 / (- smallsubnormal, 0) şimdi (-∞, -maxreal) ve yalnız -∞ değil. Oysa 1/0, ∞.

Bu konuda hala tereddüt ettiğim şey IEEE -0 ve +0'da eşittir. Ama sendikalarda yok. Haritalamanın% 100 olmadığı anlaşılıyor. Bu yüzden, farkın gösterilebileceği köşe dolapları olup olmadığını merak ediyorum ((ve bu davalar gerçekten alakalıysa).

(Farkında am negatif yüzden sıfır önemli? , Negatif kayan nokta değeri için Kullanımları )


1
Haritalamanın neden bire bir olması gerektiğini düşünüyorsunuz? Bağladığınız sorularda belirtilen nedenler, unums ile ilgili bir sorun değil, neden negatif bir sıfır yapalım?
Sıradan

@Ordous: Çünkü (Ch.18.1, s.257) "Unumlar şamandıraların bir üst kümesidir. Şamandıralar basitçe ubitin sıfır olduğu vb. ki hepsi (dahil guess) kişinin az çok (ve bir başlangıç ​​olarak) şeyleri tam anlamıyla çevirebileceğini önerir. Birebir çevirinin unums'tan tam olarak faydalanmadığının tamamen farkındayım.
yanlış

5
Kitabı elinizde bulundurmadan bir alıntıya karşı çıkmak oldukça zordur. Ancak IEEE sunumundaki slaytları unum computing avantajı olarak belirtti: "Alt akış gerek yok". Bu nedenle: tam olarak yetersiz olduğu için negatif sıfıra gerek yoktur. Belki bu sistemi negatif sıfır içerecek şekilde genişletebilirsiniz, ancak bunun için bir neden yoktur. Dürüstçe negatif IEEE 0 matematik ile tutarsız .
Sıradan

@Ordous: Düşük akış, açık aralık (-küçük-alt, 0) ve pozitif karşılığı ile işlenir. Yani bunlar -0 ve +0'a en yakın şey. Ama bu aralık gerçekten sanki?
yanlış

8
Underflow burada "halledilmez", sadece yoktur . Negatif 0, IEEE'de bir sorundur ve bu standart diğer şeylerle birlikte düzeltmeye çalışmaktadır. -0 ve +0'a eşit olamazsınız ve yapmamalısınız, ancak IEEE'de farkları 0 olduğu için eşit olmaları gerekir. Bu paradoksun iyi bir çözümü yok. Unums onlar yapmak bir fark var, dolayısıyla onlar olamaz eşit olması. Sistemin tüm amacı IEEE'deki sorunları düzeltmektir, ancak bunun mutlaka onunla tutarsız olduğu anlamına gelir. Bu, söz konusu tutarsızlıklardan biridir. Ve kitabında eski standartları kullanmak için önerilen bir yerleşik sistemin olmasının nedeni
Sıradan

Yanıtlar:


3

Bir yorum için çok uzun, bu yüzden bunu bir cevap olarak yazmak ...

IEEE ile ilgili sorun, farklılaşacak üç vakamız olduğu, ancak bunlar için sadece iki temsil olduğumuz:

  • negatif değer, mutlak değer temsil edilemeyecek kadar küçük - bu IEEE -0.0 ile temsil edilir ve kolayca eşleştirilebilir (-smallsubnormal,0)
  • IEEE 0.0 ile temsil edilen ve 0
  • pozitif değer temsil edilemeyecek kadar küçük; bunun IEEE temsili 0.0 da vardır , ancak eşlenmelidir (0, +smallsubnormal).

Şimdi sorun negatif sıfır değil , ancak IEEE 0.0 ikinci veya üçüncü durum ise ayırt edemeyiz! Başka bir deyişle: IEEE Unum gelen eşleme fonksiyonudur değil bijective - ve sonsuza dek olduğu gibi, olmayacak herhangi bunu tam veya aralık biriyse diğer IEEE değeri de biz asla bilemezsiniz!

Bu yüzden -0.0'ı eşlemenin kesinlikle iyi olduğunu düşünüyorum (-smallsubnormal,0)ve IEEE 0.0'ın eşlenecek mi 0yoksa daha iyi mi olacak (0, +smallsubnormal)? Şahsen birincisine yöneliyorum, ama bu çok yetkili değil ...

IEEE ile karşılaştırmaya gelince (-0.0, 0.0'a eşittir): Bir kimse (neredeyse) hiçbir zaman kesin eşitlik için hiçbir zaman karşılaştırılmamalıdır (C veya C ++: == operatör), ancak sadece farkın mutlak değerinin uygun bir eşikten daha küçük olması için. Şimdi sıra bu sorun, hatta Unums ile sadece kısmen ortadan yapabilirsiniz u bit ise, tam eşitlik için karşılaştırma değil , ancak ilk başta seti olmak üzere biz hala gerçekten bilmiyorum ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.