Aritmetik yetersizlik - Arithmetic underflow

Dönem aritmetik yetersizlik (Ayrıca kayan nokta alttan taşma, ya da sadece alttan taşma) bir durumdur bilgisayar programı bir hesaplamanın sonucunun, bilgisayarın gerçekte temsil edebileceğinden daha küçük bir mutlak değer sayısı olduğu hafıza onun üzerinde Merkezi işlem birimi (İŞLEMCİ).

Aritmetik yetersizlik, bir kayan noktalı işlem büyüklük olarak daha küçüktür (yani sıfıra daha yakın), bir olarak gösterilebilen en küçük değerden normal hedefteki kayan nokta sayısı veri tipi.[1] Alt akış kısmen olumsuz olarak kabul edilebilir taşma of üs kayan nokta değeri. Örneğin, üs parçası -128'den 127'ye kadar olan değerleri temsil edebiliyorsa, o zaman -128'den küçük bir değere sahip bir sonuç yetersizliğe neden olabilir.

Çok düşük değerleri bir tamsayı değişken (ör. −1'i bir imzasız tamsayı) uygun şekilde ifade edilir tamsayı taşma veya daha geniş anlamda tamsayı sarmalama. Dönem alttan taşma normalde ayrı bir konu olan kayan nokta sayılarını ifade eder. Çoğu kayan nokta tasarımında çok düşük bir değer depolamak mümkün değildir, çünkü bunlar genellikle imzalı ve negatiftir. sonsuzluk değer.

Alt akış boşluğu

Arasındaki aralık -fminN ve fminN, nerede fminN en küçük pozitif normal kayan nokta değeridir, alttan taşma aralığı olarak adlandırılır. Bunun nedeni, bu aralığın boyutunun, boşluğun hemen dışındaki bitişik normal kayan nokta değerleri arasındaki mesafeden çok sayıda büyüklük sırası olmasıdır. Örneğin, kayan noktalı veri türü 20'yi temsil edebiliyorsa bitler, alttan taşma boşluğu 221 Boşluğun hemen dışındaki bitişik kayan nokta değerleri arasındaki mutlak mesafeden kat daha büyüktür.[2]

Daha eski tasarımlarda, alttan taşma boşluğunun yalnızca bir kullanılabilir değeri vardı, sıfır. Bir yetersizlik oluştuğunda, gerçek sonuç sıfırla değiştirildi (ya doğrudan donanım tarafından ya da birincil yetersizlik durumunu işleyen sistem yazılımı tarafından). Bu değiştirmeye "sıfıra boşalt" denir.

1984 baskısı IEEE 754 tanıtıldı normal altı sayılar. Normal altı sayılar (sıfır dahil) alttan taşma boşluğunu, bitişik değerler arasındaki mutlak mesafenin alttan taşma boşluğunun hemen dışındaki bitişik değerlerle aynı olduğu değerlerle doldurur. Bu, mümkün olduğunda en yakın normal değerin kullanıldığı gibi, en yakın normal altı değerin kullanıldığı "kademeli alt akışı" etkinleştirir. Kademeli alt akış kullanıldığında bile, en yakın değer sıfır olabilir.[3]

Boşluğun hemen dışındaki bitişik kayan nokta değerleri arasındaki mutlak mesafeye makine epsilon, tipik olarak, bu kayan nokta şemasında 1 değerine sahip toplamı 1 değerine sahip yanıtla sonuçlanacak olan en büyük değer ile karakterize edilir.[4] Bu şu şekilde yazılabilir , nerede gerçek değeri kayan nokta gösterimine dönüştüren bir fonksiyondur. Makine epsilon, alttan taşma seviyesi ile karıştırılmamalı (normal altı sayılar varsayılarak), yakından ilişkilidir. Makine epsilon'u oluşturan bit sayısına bağlıdır. anlam oysa alttan taşma seviyesi üs alanını oluşturan basamakların sayısına bağlıdır. Çoğu kayan noktalı sistemde, alttan taşma seviyesi makine epsilon'dan daha küçüktür.

Alttan taşmanın tutulması

Bir alt akışın meydana gelmesi, bir ("yapışkan") durum biti ayarlayabilir, bir istisna oluşturabilir, donanım düzeyinde bir kesinti oluşturabilir veya bu etkilerin bazı kombinasyonlarına neden olabilir.

Belirtildiği gibi IEEE 754, alt akış durumu yalnızca bir hassasiyet kaybı da varsa belirtilir. Tipik olarak bu, nihai sonucun kesin olmaması olarak belirlenir. Ancak, kullanıcı yakalama alttan taşmada, bu, hassasiyet kaybına bakılmaksızın gerçekleşebilir. IEEE 754'teki alt akış (ve diğer istisnalar) için varsayılan işlem, alt akış meydana gelen bir kayan nokta durumu olarak kaydetmektir. Bu, uygulama programlama düzeyi için belirtilir, ancak genellikle donanım düzeyinde nasıl ele alınacağı olarak da yorumlanır.

Ayrıca bakınız

Referanslar

  1. ^ Coonen, Jerome T (1980). "Kayan nokta aritmetiği için önerilen bir standart için bir uygulama kılavuzu". Bilgisayar. 13 (1): 68–79. doi:10.1109 / mc.1980.1653344. S2CID  206445847.
  2. ^ Sun Microsystems (2005). Sayısal Hesaplama Kılavuzu. Oracle. Alındı 21 Nisan 2018.
  3. ^ Demmel, James (1984). "Alt Akış ve Sayısal Yazılımın Güvenilirliği". SIAM Bilimsel ve İstatistiksel Hesaplama Dergisi. 5 (4): 887–919. doi:10.1137/0905062.
  4. ^ Heath, Michael T. (2002). Bilimsel hesaplama (İkinci baskı). New York: McGraw-Hill. s. 20. ISBN  0-07-239910-4.