Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pustaka Universal C Runtime (UCRT) menyediakan banyak fungsi pustaka matematika integral dan floating-point, termasuk semua fungsi yang diperlukan oleh ISO C99. Fungsi floating-point diimplementasikan untuk menyeimbangkan performa dengan kebenaran. Karena menghasilkan hasil yang dibulatkan dengan benar mungkin sangat mahal, fungsi-fungsi ini dirancang untuk secara efisien menghasilkan perkiraan yang dekat dengan hasil yang dibulatkan dengan benar. Dalam kebanyakan kasus, hasil yang dihasilkan berada dalam +/-1 ULP (satuan presisi paling sedikit) dari hasil yang dibulatkan dengan benar, meskipun mungkin ada kasus di mana ada ketidakakuratan yang lebih besar.
Untuk ISO C Standard 11 (C11) dan yang lebih baru, <tgmath.h>
header, selain menyertakan <math.h>
dan <complex.h>
, menyediakan makro yang memanggil fungsi matematika yang sesuai berdasarkan jenis parameter. Lihat Matematika generik jenis untuk detailnya.
Banyak fungsi pustaka matematika floating-point memiliki implementasi yang berbeda untuk arsitektur CPU yang berbeda. Misalnya, CRT x86 32-bit mungkin memiliki implementasi yang berbeda dari CRT x64 64-bit. Selain itu, beberapa fungsi mungkin memiliki beberapa implementasi untuk arsitektur CPU tertentu. Implementasi yang paling efisien dipilih secara dinamis pada run-time tergantung pada set instruksi yang didukung oleh CPU. Misalnya, dalam CRT x86 32-bit, beberapa fungsi memiliki implementasi x87 dan implementasi SSE2. Saat berjalan pada CPU yang mendukung SSE2, implementasi SSE2 yang lebih cepat digunakan. Saat berjalan pada CPU yang tidak mendukung SSE2, implementasi x87 yang lebih lambat digunakan. Karena implementasi yang berbeda dari fungsi pustaka matematika dapat menggunakan instruksi CPU yang berbeda dan algoritma yang berbeda untuk menghasilkan hasilnya, fungsi dapat menghasilkan hasil yang berbeda di seluruh CPU. Dalam kebanyakan kasus, hasilnya berada dalam +/-1 ULP dari hasil yang dibulatkan dengan benar, tetapi hasil aktual dapat bervariasi di seluruh CPU.
Versi UCRT yang lebih baru dapat meningkatkan presisi dan akurasi fungsi pustaka matematika floating-point. Karena UCRT adalah bagian dari sistem operasi Windows, Anda mungkin mendapatkan hasil yang berbeda untuk fungsi-fungsi ini pada versi sistem operasi yang berbeda atau antara build debug dan rilis. Meskipun tidak disarankan, Anda dapat secara statis menautkan ke UCRT untuk menjamin hasil yang konsisten jika Anda membutuhkan fungsi-fungsi ini akan menghasilkan hasil yang identik di mana-mana.
Microsoft C/C++ dan Microsoft Visual C++ versi 16-bit sebelumnya mendukung jenis sebagai long double
jenis data floating-point presisi 80-bit. Dalam versi Visual C++yang lebih baru, long double
jenis data adalah jenis data floating-point presisi 64-bit yang identik dengan jenis tersebut double
. Kompiler memperlakukan long double
dan double
sebagai jenis yang berbeda, tetapi long double
fungsinya identik dengan rekan-rekan mereka double
. CRT menyediakan long double
versi fungsi matematika untuk kompatibilitas kode sumber ISO C99, tetapi perhatikan bahwa representasi biner mungkin berbeda dari kompilator lain.
Rutinitas matematika dan floating-point yang didukung
Rutin | Menggunakan |
---|---|
abs , , labs llabs ,_abs64 |
Menghitung nilai absolut dari jenis bilangan bulat |
acos , , acosf acosl |
Menghitung kosinus busur |
acosh , , acoshf acoshl |
Menghitung kosinus busur hiperbolik |
asin , , asinf asinl |
Menghitung sinus busur |
asinh , , asinhf asinhl |
Menghitung sinus busur hiperbolik |
atan , , atanf atanl , atan2 , , atan2f ,atan2l |
Menghitung tangen busur |
atanh , , atanhf atanhl |
Menghitung tangen busur hiperbolik |
_atodbl , _atodbl_l |
Mengonversi string khusus lokal menjadi double |
atof , _atof_l |
Mengonversi string menjadi double |
_atoflt , , _atoflt_l _atoldbl ,_atoldbl_l |
Mengonversi string khusus lokal ke float atau long double |
cbrt , , cbrtf cbrtl |
Menghitung akar kubus |
ceil , , ceilf ceill |
Menghitung langit-langit |
_chgsign , , _chgsignf _chgsignl |
Menghitung inversi aditif |
_clear87 , _clearfp |
Mendapatkan dan menghapus register status floating-point |
_control87 , , _controlfp __control87_2 |
Mendapatkan dan mengatur kata kontrol floating-point |
_controlfp_s |
Versi aman dari _controlfp |
copysign , , copysignf copysignl , _copysign , , _copysignf ,_copysignl |
Mengembalikan nilai yang memiliki besaran satu argumen dan tanda yang lain |
cos , , cosf cosl |
Menghitung sinus |
cosh , , coshf coshl |
Menghitung sinus hiperbolik |
div , , ldiv lldiv |
Menghitung kuota dan sisa dua nilai bilangan bulat |
_ecvt , ecvt |
Mengonversi menjadi double string |
_ecvt_s |
Versi aman dari _ecvt |
erf , , erff erfl |
Menghitung fungsi kesalahan |
erfc , , erfcf erfcl |
Menghitung fungsi kesalahan pelengkap |
exp , , expf expl |
Menghitung eksponensial ex |
exp2 , , exp2f exp2l |
Menghitung eksponensial 2x |
expm1 , , expm1f expm1l |
Menghitung ex-1 |
fabs , , fabsf fabsl |
Menghitung nilai absolut dari jenis floating-point |
_fcvt , fcvt |
Mengonversi angka floating-point menjadi string |
_fcvt_s |
Versi aman dari _fcvt |
fdim , , fdimf fdiml |
Menentukan perbedaan positif antara dua nilai |
feclearexcept |
Menghapus pengecualian floating-point yang ditentukan |
fegetenv |
Menyimpan lingkungan floating-point saat ini |
fegetexceptflag |
Mendapatkan status pengecualian floating-point yang ditentukan |
fegetround |
Mendapatkan mode pembulatan titik mengambang |
feholdexcept |
Mengatur mode pengecualian titik mengambang tanpa henti |
feraiseexcept |
Menaikkan pengecualian floating-point yang ditentukan |
fesetenv |
Mengatur lingkungan floating-point saat ini |
fesetexceptflag |
Mengatur bendera status floating-point yang ditentukan |
fesetround |
Mengatur mode pembulatan titik mengambang yang ditentukan |
fetestexcept |
Menentukan bendera status pengecualian titik mengambang mana yang diatur |
feupdateenv |
Memulihkan lingkungan titik mengambang lalu memunculkan pengecualian sebelumnya |
floor , , floorf floorl |
Menghitung lantai |
fma , , fmaf fmal |
Menghitung multiply-add yang menyatu |
fmax , , fmaxf fmaxl |
Menghitung maksimum argumen |
fmin , , fminf fminl |
Menghitung minimum argumen |
fmod , , fmodf fmodl |
Menghitung sisa titik mengambang |
_fpclass , _fpclassf |
Mengembalikan klasifikasi nilai floating-point |
fpclassify |
Mengembalikan klasifikasi nilai floating-point |
_fpieee_flt |
Mengatur handler untuk pengecualian floating-point |
_fpreset |
Mereset lingkungan floating-point |
frexp , , frexpf frexpl |
Mendapatkan mantissa dan eksponen dari angka floating-point |
_gcvt , gcvt |
Mengonversi angka floating-point menjadi string |
_gcvt_s |
Versi aman dari _gcvt |
_get_FMA3_enable , _set_FMA3_enable |
Mendapatkan atau mengatur bendera untuk penggunaan instruksi FMA3 pada x64 |
hypot , , hypotf hypotl , _hypot , , _hypotf ,_hypotl |
Menghitung hipotenus |
ilogb , , ilogbf ilogbl |
Menghitung eksponen base-2 bilangan bulat |
imaxabs |
Menghitung nilai absolut dari jenis bilangan bulat |
imaxdiv |
Menghitung kuota dan sisa dua nilai bilangan bulat |
isfinite , , _finite _finitef |
Menentukan apakah nilai terbatas |
isgreater , , isgreaterequal isless , islessequal , , islessgreater ,isunordered |
Membandingkan urutan dua nilai floating-point |
isinf |
Menentukan apakah nilai floating-point tidak terbatas |
isnan , , _isnan _isnanf |
Menguji nilai floating-point untuk NaN |
isnormal |
Menguji apakah nilai floating-point terbatas dan bukan subnormal |
_j0 , , _j1 _jn |
Menghitung fungsi Bessel |
ldexp , , ldexpf ldexpl |
Komputasi x*2n |
lgamma , , lgammaf lgammal |
Menghitung logaritma alami dari nilai absolut fungsi gamma |
llrint , , llrintf llrintl |
Membulatkan nilai floating-point ke nilai terdekat long long |
llround , , llroundf llroundl |
Membulatkan nilai floating-point ke nilai terdekat long long |
log , , logf logl , log10 , , log10f ,log10l |
Menghitung logaritma alami atau base-10 |
log1p , , log1pf log1pl |
Menghitung logaritma alami 1+x |
log2 , , log2f log2l |
Menghitung logaritma base-2 |
logb , , logbf logbl , , _logb ,_logbf |
Mengembalikan eksponen dari nilai floating-point |
lrint , , lrintf lrintl |
Membulatkan nilai floating-point ke nilai terdekat long |
_lrotl , _lrotr |
Memutar nilai bilangan bulat ke kiri atau kanan |
lround , , lroundf lroundl |
Membulatkan nilai floating-point ke nilai terdekat long |
_matherr |
Penangan kesalahan matematika default |
__max |
Makro yang mengembalikan nilai yang lebih besar dari dua nilai |
__min |
Makro yang mengembalikan nilai yang lebih kecil dari dua nilai |
modf , , modff modfl |
Membagi nilai floating-point menjadi bagian pecahan dan bilangan bulat |
nan , , nanf nanl |
Mengembalikan nilai NaN yang diam |
nearbyint , , nearbyintf nearbyintl |
Mengembalikan nilai yang dibulatkan |
nextafter , , nextafterf nextafterl , , _nextafter ,_nextafterf |
Mengembalikan nilai floating-point berikutnya yang dapat diwakili |
nexttoward , , nexttowardf nexttowardl |
Mengembalikan nilai floating-point berikutnya yang dapat diwakili |
pow , , powf powl |
Mengembalikan nilai dari x y |
remainder , , remainderf remainderl |
Menghitung sisa kuota dari dua nilai floating-point |
remquo , , remquof remquol |
Menghitung sisa dua nilai bilangan bulat |
rint , , rintf rintl |
Membulatkan nilai floating-point |
_rotl , , _rotl64 _rotr ,_rotr64 |
Memutar bit dalam tipe bilangan bulat |
round , , roundf roundl |
Membulatkan nilai floating-point |
_scalb , _scalbf |
Menskalakan argumen dengan kekuatan 2 |
scalbn , , scalbnf scalbnl , scalbln , , scalblnf ,scalblnl |
Mengalikan angka titik mengambang dengan kekuatan integral FLT_RADIX |
_set_controlfp |
Mengatur kata kontrol titik mengambang |
_set_SSE2_enable |
Mengaktifkan atau menonaktifkan instruksi SSE2 |
signbit |
Menguji bit tanda dari nilai floating-point |
sin , , sinf sinl |
Menghitung sinus |
sinh , , sinhf sinhl |
Menghitung sinus hiperbolik |
sqrt , , sqrtf sqrtl |
Menghitung akar kuadrat |
_status87 , , _statusfp _statusfp2 |
Mendapatkan kata status floating-point |
strtof , _strtof_l |
Mengonversi string menjadi float |
strtold , _strtold_l |
Mengonversi string menjadi long double |
tan , , tanf tanl |
Menghitung tangen |
tanh , , tanhf tanhl |
Menghitung tangen hiperbolik |
tgamma , , tgammaf tgammal |
Menghitung fungsi gamma |
trunc , , truncf truncl |
Memotong bagian pecahan |
_wtof , _wtof_l |
Mengonversi string lebar menjadi double |
_y0 , , _y1 _yn |
Menghitung fungsi Bessel |
Lihat juga
Rutinitas runtime Universal C menurut kategori
Primitif titik mengambang