Kayan Noktalı Sayı Olağandışılıkları
Önceki Gerçek Sayı Hesaplamalarında Hatalar Sonraki
Kayan Noktalı Sayı Olağandışılıkları
IEEE 754 standardı hesaplama sırasında oluşan beş tane olağandışılık tanımlar. Her biri üstten taşma gibi belli başlı bir hataya karşılıktır.
Olağandışılıklar oluştuğunda (standardın dilinde, olağandışılıklar ortaya çıktığında) iki şeyden biri olur. Öntanımlı olarak olağandışılık basitçe kayan noktalı durum sözcüğüne kaydedilir ve yazılım hiçbir şey olmamış gibi çalışmaya devam eder. İşlem olağandışılığa bağlı bir öntanımlı değer üretir (aşağıdaki tabloya bakınız). Yazılımınız durum sözcüğüne bakarak hangi olağandışılığın oluştuğunu saptar.
Bundan başka, olağandışılıklar için kapanları etkinleştirebilirsiniz. Bu durumda, bir olağandışılık ortaya çıktığında, yazılımınız SIGFPE sinyali alacaktır. Bu sinyalin öntanımlı eylemi yazılımın sonlanmasıdır. Sinyallerin etkilerinin nasıl değiştirildiği Sinyal İşleme bölümünde anlatılmıştır.
System V matematik kütüphanesinde, kütüphane işlevleri içinde bu olağandışılıklardan bir oluştuğunda kullanıcı tanımlı matherr işlevi çağrılır. Ancak Unix98 standardı bu arayüzün kullanılmasını önermez. Bu işlevi geçmişe uyumluluk adına destekliyoruz, ama yeni yazılımlarda kullanmamanızı öneriyoruz.
IEEE 754 standardında tanımlanan olağandışılıklar:
Geçersiz İşlem
Belirtilen terimler uygulanacak işlem için geçersiz ise bu olağandışılık ortaya çıkar. Örnekler (IEEE 754, bölüm 7'ye bakın):
  1. Toplama ve çıkarma: oo - oo. (ama oo + oo = oo).
  2. Çarpma: 0 * oo.
  3. Bölme: 0/0 or oo/oo.
  4. Kalan: y sıfır ya da x sonsuz olduğunda x REM y.
  5. Karekök alma işleminde terim sıfırdan küçükse. Daha genel olarak kendi işlem sahası dışında işlem yapmaya zorlanan matematiksel işlevler bu olağandışılığı üretir.
  6. Gerçek sayıların tamsayıya ya da ondalık dizgeye dönüştürülmesinde sayı hedef biçimde gösterilemiyorsa (üstten taşma, sonsuzluk ya da NaN sebebiyle).
  7. Tanınamayan bir girdi dizgesinin dönüşümü.
  8. İlişkisel işleçlerle (< veya >) yapılan karşılaştırmalarda, terimlerden birinin NaN olması. Bu işleçleri kullanmak yerine düzensiz karşılaştırma işlevlerini kullanarak bu olağandışılıktan kaçınabilirsiniz; bkz. Gerçek Sayı Karşılaştırma İşlevleri.
Olağandışılık yakalanmazsa işlemin sonucu NaN'dır.
Sıfırla Bölme
Bu olağandışılık sıfırdan farklı bir sonlu sayı sıfırla bölündüğünde ortaya çıkar. Bir yakalama gerçekleşmezse sonuç terimlerin işaretine bağlı olarak ya +oo ya da -oo'dur.
Üstten Taşma
Bu olağandışılık sonuç hedef hassasiyet biçiminde bir sonlu değer olarak gösterilemiyorsa ortaya çıkar. Bir yakalama gerçekleşmezse sonuç ara sonucun işaretine ve geçerli yuvarlama kipine bağlıdır (IEEE 754, bölüm 7.32e bakın):
  1. En yakın sayıya yuvarlama tüm üstten taşmaları ara sonucun işareti ile sonsuza taşır.
  2. Sıfıra yuvarlama tüm üstten taşmaları ara sonucun işareti ile gösterilebilir en büyük sonlu sayıya taşır.
  3. Eksi sonsuza yuvarlama pozitif üstten taşmaları gösterilebilir en büyük sonlu sayıya, negatif üstten taşmaları ise eksi sonsuza taşır.
  4. Sonsuza yuvarlama negatif üstten taşmaları gösterilebilir en negatif sonlu sayıya, pozitif üstten taşmaları ise sonsuza taşır.
Her üstten taşma olağandışılığı ayrıca kesin olmama olağandışılığının ortaya çıkmasına sebep olur.
Alttan Taşma
Alttan taşma olağandışılığı bir ara sonuç tam olarak hesaplanmış olarak çok küçük olduğunda ya da hedefin hassasiyetine yuvarlama işleminin sonucu normalleştirilmiş olarak çok küçük olduğunda ortaya çıkar.
Alttan taşma olağandışılığı için bir kapan kurulmadığında, alttan taşma sadece küçücüklük ve doğruluk kaybı birlikte saptandığında sinyallenir (alttan taşma bayrağı üzerinden). Bir sinyal eylemci kurulu değilse, işlem bir belirsiz küçük değer ile ya da hedefin hassasiyeti tam doğru küçük sonucu tutamayacaksa sıfır ile devam eder.
Kesin Olmama
Bu olağandışılık eğer bir yuvarlanan sonuç kesin değilse (örneğin karekök iki hesaplanırken) ya da bir sonuç bir üstten taşma kapanı olmaksızın üstten taşarsa sinyallenir.
Önceki Üst Ana Başlık Sonraki
Gerçek Sayı Hesaplamalarında Hatalar Başlangıç Sonsuzluk ve NaN
Bir Linux Kitaplığı Sayfası