Sonsuzluk ve NaN
Önceki Gerçek Sayı Hesaplamalarında Hatalar Sonraki
Sonsuzluk ve NaN
IEEE 754 kayan noktalı sayıları ile pozitif ve negatif sonsuz sayılar ve sayı olmama durumu (NaN) gösterilebilir. Bu üç değer hesaplamalardaki sonuç tanımsızsa ya da tam doğru olarak gösterilemiyorsa ortaya çıkar. Ayrıca bunlardan birini bir gerçek sayı değişkenine enine boyuna düşünerek faydası olacaksa atayabilirsiniz. Sonsuzluk ve NaN üreten bazı hesaplama örnekleri:
1/0 = oo
log (0) = -oo
sqrt (-1) = NaN
Bir hesaplama bu değerlerden birini ürettiğinde ayrıca bir olağandışılık oluşur; bkz. Kayan Noktalı Sayı Olağandışılıkları.
Temel işlemler ve matematik işlevlerinin hepsi sonsuzluk ve NaN değerlerini kabul ederler ve uygun bir çıktı üretirler. Sonsuzluğun hesaplamalarda kullanılışına örnekler: 2 + oo = oo, 4/oo = 0, atan (oo) = pi/2. Ancak, NaN bulaştığı bir hesaplamayı bozar. Hesaplama aynı sonucu üretmedikçe sonucun NaN mı olduğu yoksa gerçek sonucun yerini NaN'ın mı aldığının bir önemi yoktur.
Karşılaştırma işlemlerinde pozitif sonsuz, kendisi ve NaN hariç diğer tüm değerlerden büyüktür; negatif sonsuz ise kendisi ve NaN hariç diğer tüm değerlerden küçüktür. NaN sıradışıdır: kendisi dahil ne bir şeye eşittir, ne birşeyden küçük, ne de birşeyden büyüktür. x == x karşılaştırması değer NaN olduğunda yanlıştır. Bu durumu bir değerin NaN olup olmadığını sınamak için kullanabilirsiniz, ancak önerilen yöntem isnan işlevini kullanmaktır (bkz. Gerçek Sayı Sınıflama İşlevleri). Ek olarak, NaN'lara uygulandığında <, >, <= ve >= işleçleri bir olağandışılık ortaya çıkarırlar.
Bir değişkene sonsuzluk veya NaN atamayı mümkün kılan makrolar math.h dosyasında tanımlanmıştır.
float INFINITY
makro
Pozitif sonsuzu gösteren bir ifade. 1.0 / 0.0 gibi matematiksel bir işlemin sonucuna eşittir. Negatif sonsuz -INFINITY'dir.
Bir gerçek sayının sonsuz olup olmadığını bu makro ile karşılaştırarak sınayabilirsiniz. Ancaki bu önerilmez; bunun yerine isfinite makrosunu kullanmalısınız; bkz. Gerçek Sayı Sınıflama İşlevleri.
Bu makro ISO C99 standardında tanıtıldı.
float NAN
makro
Sayı olmayan bir değeri gösteren bir ifade. Bu makro bir GNU oluşumudur ve sadece IEEE kayan noktalı sayıları destekleyen tüm makinelerde desteklenir.
Bir makinede NaN desteği olup olmadığını sınamak için #ifdef NAN kullanabilirsiniz. (Şüphesiz, _GNU_SOURCE tanımlayarak ve math.h başlık dosyasını yazılımınıza dahil ederek GNU oluşumlarının görünür olmasını sağlamalısınız.)
IEEE 754 ayrıca başka bir faydasız değeri mümkün kılar: negatif sıfır. Bu değer, bir pozitif sayıyı negatif sonsuza böldüğünüzde ya da bir negatif sonuç gösterim sınırından daha küçükse üretilir. Negatif sıfır, işaret bitini signbit veya copysign ile doğrudan sınamadıkça tüm hesaplamalarda sıfır gibi davranır.
Önceki Üst Ana Başlık Sonraki
Kayan Noktalı Sayı Olağandışılıkları Başlangıç Kayan Nokta Birimi Durum Sözcüğünün İncelenmesi
Bir Linux Kitaplığı Sayfası