Aracılığıyla paylaş


Matematik ve kayan nokta desteği

Evrensel C Çalışma Zamanı kitaplığı (UCRT), ISO C99'un gerektirdiği tüm işlevler de dahil olmak üzere birçok integral ve kayan nokta matematik kitaplığı işlevi sağlar. Kayan nokta işlevleri, performansı doğrulukla dengelemek için uygulanır. Doğru yuvarlatılmış sonucun üretilmesi çok pahalı olabileceğinden, bu işlevler doğru yuvarlanmış sonuca yakın bir tahmini verimli bir şekilde üretecek şekilde tasarlanmıştır. Çoğu durumda, üretilen sonuç doğru yuvarlanmış sonucun +/-1 ULP (en az duyarlık birimi) içindedir, ancak daha fazla yanlışlık olduğu durumlar olabilir.

ISO C Standard 11 (C11) ve üzeri için, <tgmath.h> ve <complex.h>eklemeye <math.h> ek olarak üst bilgi, parametrelerin türlerine göre karşılık gelen matematik işlevini çağıran makrolar sağlar. Ayrıntılar için bkz . Tür genel matematik .

Kayan nokta matematik kitaplığı işlevlerinin birçoğu farklı CPU mimarileri için farklı uygulamalara sahiptir. Örneğin, 32 bit x86 CRT, 64 bit x64 CRT'den farklı bir uygulamaya sahip olabilir. Ayrıca, bazı işlevlerin belirli bir CPU mimarisi için birden çok uygulaması olabilir. En verimli uygulama, CPU tarafından desteklenen yönerge kümelerine bağlı olarak çalışma zamanında dinamik olarak seçilir. Örneğin, 32 bit x86 CRT'de bazı işlevlerin hem x87 uygulaması hem de SSE2 uygulaması vardır. SSE2'yi destekleyen bir CPU üzerinde çalışırken, daha hızlı SSE2 uygulaması kullanılır. SSE2'yi desteklemeyen bir CPU üzerinde çalışırken, daha yavaş x87 uygulaması kullanılır. Matematik kitaplığı işlevlerinin farklı uygulamaları, sonuçlarını üretmek için farklı CPU yönergeleri ve farklı algoritmalar kullanabileceğinden, işlevler CPU'lar arasında farklı sonuçlar üretebilir. Çoğu durumda, sonuçlar doğru yuvarlanmış sonucun +/-1 ULP'sindedir, ancak gerçek sonuçlar CPU'lar arasında farklılık gösterebilir.

Microsoft C/C++ ve Microsoft Visual C++'ın önceki 16 bit sürümleri, türü 80 bit duyarlık kayan long double nokta veri türü olarak destekliyor. Visual C++'ın sonraki sürümlerinde veri türü, türüyle long double aynı olan 64 bit duyarlık kayan double nokta veri türüdür. Derleyici ve double değerlerini ayrı türler olarak ele alırlong double, ancak long double işlevler karşılık gelenleriyle double aynıdır. CRT, ISO C99 kaynak kodu uyumluluğu için matematik işlevlerinin sürümlerini sağlar long double , ancak ikili gösterimin diğer derleyicilerden farklı olabileceğini unutmayın.

Desteklenen matematik ve kayan nokta yordamları

Yordam Kullanma
abs, labs, llabs, _abs64 Tamsayı türünün mutlak değerini hesaplar
acos, acosf, acosl Ark kosinüsünü hesaplar
acosh, acoshf, acoshl Hiperbolik ark kosinüsünü hesaplar
asin, asinf, asinl Ark sinüsünü hesaplar
asinh, asinhf, asinhl Hiperbolik ark sinüsünü hesaplar
atan, atanf, atanl, , atan2, atan2f, atan2l Yay tanjantını hesaplar
atanh, atanhf, atanhl Hiperbolik yay tanjantını hesaplar
_atodbl, _atodbl_l Yerel ayara özgü bir dizeyi bir double
atof, _atof_l Dizeyi bir dizeye dönüştürür double
_atoflt, _atoflt_l, _atoldbl, _atoldbl_l Yerel ayara özgü bir dizeyi veya float değerine dönüştürür long double
cbrt, cbrtf, cbrtl Küp kökünü hesaplar
ceil, ceilf, ceill Tavanı hesaplar
_chgsign, _chgsignf, _chgsignl Ekleme tersini hesaplar
_clear87, _clearfp Kayan nokta durum kaydını alır ve temizler
_control87, _controlfp, __control87_2 Kayan nokta denetim sözcüğünü alır ve ayarlar
_controlfp_s Güvenli sürümü _controlfp
copysign, copysignf, copysignl, , _copysign, _copysignf, _copysignl Bir bağımsız değişkenin büyüklüğüne ve başka bir bağımsız değişkenin işaretine sahip bir değer döndürür
cos, cosf, cosl Sinüsü hesaplar
cosh, coshf, coshl Hiperbolik sinüsü hesaplar
div, ldiv, lldiv İki tamsayı değerinin bölümünü ve geri kalanını hesaplar
_ecvt, ecvt Bir double dizeye dönüştürür
_ecvt_s Güvenli sürümü _ecvt
erf, erff, erfl Hata işlevini hesaplar
erfc, erfcf, erfcl Tamamlayıcı hata işlevini hesaplar
exp, expf, expl Üstel ex'i hesaplar
exp2, exp2f, exp2l Üstel 2x'i hesaplar
expm1, expm1f, expm1l İşlemler ex-1
fabs, fabsf, fabsl Kayan nokta türünün mutlak değerini hesaplar
_fcvt, fcvt Kayan noktalı sayıyı dizeye dönüştürür
_fcvt_s Güvenli sürümü _fcvt
fdim, fdimf, fdiml İki değer arasındaki pozitif farkı belirler
feclearexcept Belirtilen kayan nokta özel durumlarını temizler
fegetenv Geçerli kayan nokta ortamını depolar
fegetexceptflag Belirtilen kayan nokta özel durum durumunu alır
fegetround Kayan nokta yuvarlama modunu alır
feholdexcept Duramayan kayan nokta özel durum modunu ayarlar
feraiseexcept Belirtilen kayan nokta özel durumlarını oluşturur
fesetenv Geçerli kayan nokta ortamını ayarlar
fesetexceptflag Belirtilen kayan nokta durum bayraklarını ayarlar
fesetround Belirtilen kayan nokta yuvarlama modunu ayarlar
fetestexcept Hangi kayan nokta özel durum bayraklarının ayarlandığını belirler
feupdateenv Kayan nokta ortamını geri yükler ve ardından önceki özel durumları oluşturur
floor, floorf, floorl Zemini hesaplar
fma, fmaf, fmal Birleştirilmiş çarpma-ekleme hesaplar
fmax, fmaxf, fmaxl Bağımsız değişkenlerin en yüksek sayısını hesaplar
fmin, fminf, fminl Bağımsız değişkenlerin en düşük sayısını hesaplar
fmod, fmodf, fmodl Kayan nokta geri kalanını hesaplar
_fpclass, _fpclassf Kayan nokta değerinin sınıflandırmasını verir
fpclassify Kayan nokta değerinin sınıflandırmasını verir
_fpieee_flt Kayan nokta özel durumları için bir işleyici ayarlar
_fpreset Kayan nokta ortamını sıfırlar
frexp, frexpf, frexpl Kayan noktalı bir sayının mantisini ve üssünü alır
_gcvt, gcvt Kayan noktalı sayıyı dizeye dönüştürür
_gcvt_s Güvenli sürümü _gcvt
_get_FMA3_enable, _set_FMA3_enable x64'te FMA3 yönergelerini kullanmak için bir bayrak alır veya ayarlar
hypot, hypotf, hypotl, , _hypot, _hypotf, _hypotl Hipotenüs hesaplar
ilogb, ilogbf, ilogbl Base-2 üssü tamsayısını hesaplar
imaxabs Tamsayı türünün mutlak değerini hesaplar
imaxdiv İki tamsayı değerinin bölümünü ve geri kalanını hesaplar
isfinite, _finite, _finitef Bir değerin sonlu olup olmadığını belirler
isgreater, isgreaterequal, isless, , islessequal, islessgreater, isunordered İki kayan nokta değerinin sırasını karşılaştırma
isinf Kayan nokta değerinin sonsuz olup olmadığını belirler
isnan, _isnan, _isnanf NaN için kayan nokta değerini test etme
isnormal Kayan nokta değerinin hem sonlu olup olmadığını hem de altnormal olup olmadığını sınar
_j0, _j1, _jn Bessel işlevini hesaplar
ldexp, ldexpf, ldexpl İşlemler x*2n
lgamma, lgammaf, lgammal Gama işlevinin mutlak değerinin doğal logaritması hesaplanır
llrint, llrintf, llrintl Kayan nokta değerini en long long yakın değere yuvarlar
llround, llroundf, llroundl Kayan nokta değerini en long long yakın değere yuvarlar
log, logf, logl, , log10, log10f, log10l Doğal veya 10 tabanındaki logaritması hesaplar
log1p, log1pf, log1pl 1+x'in doğal logaritması hesaplanır
log2, log2f, log2l 2 tabanındaki logaritması hesaplar
logb, logbf, logbl, _logb, , _logbf Kayan nokta değerinin üssünü verir
lrint, lrintf, lrintl Kayan nokta değerini en long yakın değere yuvarlar
_lrotl, _lrotr Tamsayı değerini sola veya sağa döndürür
lround, lroundf, lroundl Kayan nokta değerini en long yakın değere yuvarlar
_matherr Varsayılan matematik hata işleyicisi
__max İki değerin büyük bölümünü döndüren makro
__min İki değerin küçük olanını döndüren makro
modf, modff, modfl Kayan nokta değerini kesirli ve tamsayı bölümlerine böler
nan, nanf, nanl Sessiz bir NaN değeri verir
nearbyint, nearbyintf, nearbyintl Yuvarlatılmış değeri verir
nextafter, nextafterf, nextafterl, _nextafter, , _nextafterf Bir sonraki temsil edilebilir kayan nokta değerini verir
nexttoward, nexttowardf, nexttowardl Bir sonraki temsil edilebilir kayan nokta değerini verir
pow, powf, powl değerini verir xy
remainder, remainderf, remainderl İki kayan nokta değerinin bölümünün geri kalanını hesaplar
remquo, remquof, remquol İki tamsayı değerinin geri kalanını hesaplar
rint, rintf, rintl Kayan nokta değerini yuvarlar
_rotl, _rotl64, _rotr, _rotr64 Bitleri tamsayı türlerinde döndürür
round, roundf, roundl Kayan nokta değerini yuvarlar
_scalb, _scalbf Bağımsız değişkeni 2'nin gücüne göre ölçeklendirir
scalbn, scalbnf, scalbnl, , scalbln, scalblnf, scalblnl Kayan noktalı bir sayıyı, FLT_RADIX
_set_controlfp Kayan nokta denetim sözcüğünü ayarlar
_set_SSE2_enable SSE2 yönergelerini etkinleştirir veya devre dışı bırakır
signbit Kayan nokta değerinin işaret bitini test etme
sin, sinf, sinl Sinüsü hesaplar
sinh, sinhf, sinhl Hiperbolik sinüsü hesaplar
sqrt, sqrtf, sqrtl Karekök hesaplar
_status87, _statusfp, _statusfp2 Kayan nokta durum sözcüğünü alır
strtof, _strtof_l Dizeyi bir dizeye dönüştürür float
strtold, _strtold_l Dizeyi bir dizeye dönüştürür long double
tan, tanf, tanl Tanjant hesaplar
tanh, tanhf, tanhl Hiperbolik tanjantını hesaplar
tgamma, tgammaf, tgammal Gama işlevini hesaplar
trunc, truncf, truncl Kesirli bölümü kesirli olarak kesirler
_wtof, _wtof_l Geniş bir dizeyi bir double
_y0, _y1, _yn Bessel işlevini hesaplar

Ayrıca bkz.

Kategoriye göre Evrensel C çalışma zamanı yordamları
Kayan nokta temel elemanları