Gerçek Sayı Sınıflama İşlevleri
Önceki XX. Oylum - Aritmetik İşlevleri Sonraki
Gerçek Sayı Sınıflama İşlevleri
ISO C99 bir değişkendeki bir gerçek sayının çeşidini saptamanıza yardımcı olacak makrolar tanımlamıştır.
int fpclassify
(float-type x)
makro
Tüm gerçek sayı türleri ile çalışan ve int türünde bir değer ile dönen bir soysal makrodur. Olası dönüş değerleri:
FP_NAN
x sayısı normal bir sayı değil. (Bkz. Sonsuzluk ve NaN)
FP_INFINITE
x sayısı ya artı ya da eksi sonsuz. (Bkz. Sonsuzluk ve NaN)
FP_ZERO
x sayısı sıfır. IEEE 754 benzeri kayan noktalı biçimlerde sıfırlar işaretli olabilir, dolayısıyla bu değer eksi sıfır için de döner.
FP_SUBNORMAL
Mutlak değeri çok küçük olduğundan normal biçimde gösterilemeyen sayılar normalleştirilmemiş biçim denilen biçimde gösterilebilir (bkz. Gerçek Sayı Gösterimi ile İlgili Kavramlar). Bu biçim pek hassas olmamakla birlikte sıfıra çok yakın değerleri gösterebilir. fpclassify işlevi bu diğer biçimle gösterilmekten başka çare olmayan x değerleri için bu makronun değerini döndürür.
FP_NORMAL
x sayısına özel hiçbir durum olmadığını gösterir, yani sayı sıradan, normal bir sayıdır.
fpclassify işlevi bir sayının birden fazla özelliği olması durumunda çok kullanışlıdır. Bir defada bir özelliği sınayan daha özel makrolar da vardır. Bunlar için özel donanım desteği olduğundan bu makrolar fpclassify işlevinden daha hızlıdırlar. Bu bakımdan, mümkün olduğunca bu özel makroları kullanmalısınız.
int isfinite
(bir-float-tür x)
makro
Bu makro x değeri bir sonlu değerse sıfırdan farklı bir değerle döner (sonlu değer: eksi ya da artı sonsuz ve NaN olmayan). İşlem,
(fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE)
ifadesine eşdeğerdir. isfinite herhangi bir gerçek sayı türünü kabul eden bir makro olarak gerçeklenmiştir.
int isnormal
(bir-float-tür x)
makro
Bu makro x değeri bir sonlu ve normalleştirilmiş değerse sıfırdan farklı bir değerle döner. Eşdeğer ifade:
(fpclassify (x) == FP_NORMAL)
int isnan
(float-type x)
makro
Bu makro x değeri normal bir sayı değilse (NaN ise) sıfırdan farklı bir değerle döner. Eşdeğer ifade:
(fpclassify (x) == FP_NAN)
Gerçek sayı sınıflama işlevlerinin BSD sürümleri de vardır ve GNU C kütüphanesi bu işlevleri de destekler. Yine de yeni geliştireceğiniz yazılımlarda ISO C99 makrolarını kullanmanızı öneririz. Bunlar standarttır ve daha geniş çapta kullanılır olacaktır. Ayrıca, makro olduklarından argüman türleri bakımından endişelenmeniz gerekmez.
int isinf
(double x)
int isinff
(float x)
int isinfl
(long double x)
işlev
Bu işlevler x'in değeri negatif sonsuz ise -1 ile, positif sonsuz ise 1 ile aksi takdirde 0 ile döner.
int isnan
(double x)
int isnanf
(float x)
int isnanl
(long double x)
işlev
Bu işlevler x bir sayı değilse (yani NaN ise), sıfırdan farklı bir değerle, aksi takdirde sıfır ile döner.
Not
ISO C99 tarafından tanımlanan isnan makrosu BSD işlevinin yerine geçer. Bu durum normalde bir soruna yol açmaz çünkü bu ikisi birbirine eşdeğerdir. Buna rağmen, illaki BSD işlevine ihtiyacınız varsa şunu yazın:
(isnan) (x)
int finite
(double x)
int finitef
(float x)
int finitel
(long double x)
işlev
Bu işlevler x bir sayı değilse (yani NaN ise) ya da sonlu bir sayı ise, sıfırdan farklı bir değerle, aksi takdirde sıfır ile döner.
Taşınabilirlik Bilgisi
Bu bölümde listelenen işlevler BSD oluşumudur.
Önceki Üst Ana Başlık Sonraki
Gerçek Sayılar Başlangıç Gerçek Sayı Hesaplamalarında Hatalar
Bir Linux Kitaplığı Sayfası