Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Knihovna UCRT (Universal C Runtime Library) poskytuje mnoho integrálních a plovoucích funkcí matematické knihovny, včetně všech funkcí vyžadovaných iso C99. Funkce s plovoucí desetinou čárkou se implementují pro vyvážení výkonu se správností. Vzhledem k tomu, že vytvoření správně zaokrouhleného výsledku může být příliš nákladné, jsou tyto funkce navrženy tak, aby efektivně vytvářely blízkou aproximaci správně zaokrouhleného výsledku. Ve většině případů se výsledek vytvoří v rozsahu +/-1 ULP (jednotka nejmenší přesnosti) správně zaokrouhleného výsledku, i když může docházet k případům, kdy je větší nepřesnost.
V případě standardu ISO C 11 (C11) a novější hlavička <tgmath.h> kromě zahrnutí <math.h> a <complex.h>poskytuje makra, která vyvolávají odpovídající matematickou funkci na základě typů parametrů. Podrobnosti najdete v tématu Matematika pro obecné typy.
Mnoho funkcí matematické knihovny s plovoucí desetinou čárkou má různé implementace pro různé architektury procesoru. Například 32bitová verze x86 CRT může mít jinou implementaci než 64bitová verze x64 CRT. Některé funkce navíc můžou mít několik implementací pro danou architekturu procesoru. Nejúčinnější implementace je vybrána dynamicky za běhu v závislosti na sadách instrukcí podporovaných procesorem. Například v 32bitovém x86 CRT mají některé funkce implementaci x87 i implementaci SSE2. Při spouštění na procesoru, který podporuje SSE2, se použije rychlejší implementace SSE2. Při spouštění na procesoru, který nepodporuje SSE2, se používá pomalejší implementace x87. Vzhledem k tomu, že různé implementace funkcí matematické knihovny mohou k vytvoření výsledků použít různé instrukce procesoru a různé algoritmy, můžou funkce vytvářet různé výsledky napříč procesory. Ve většiněpřípadůch
Novější verze UCRT mohou zlepšit přesnost a přesnost funkcí matematické knihovny s plovoucí desetinnou čárkou. Vzhledem k tomu, že UCRT je součástí operačního systému Windows, můžete získat různé výsledky pro tyto funkce v různých verzích operačního systému nebo mezi sestaveními ladění a vydání. I když se nedoporučuje, můžete staticky propojit s UCRT, abyste zajistili konzistentní výsledky, pokud budete potřebovat tyto funkce, budou mít všude stejné výsledky.
Předchozí 16bitové verze Microsoft C/C++ a Microsoft Visual C++ podporovaly long double typ jako datový typ s plovoucí desetinnou čárkou s přesností na 80 bitů. V novějších verzích visual C++ long double je datový typ 64bitové přesnosti s plovoucí desetinnou čárkou identický s typem double . Kompilátor pracuje s long doubledouble různými typy, ale long double funkce jsou identické s jejich double protějšky. CRT poskytuje long double verze matematických funkcí pro kompatibilitu zdrojového kódu ISO C99, ale všimněte si, že binární reprezentace se může lišit od jiných kompilátorů.
Podporované matematické rutiny a rutiny s plovoucí desetinou čárkou
| Rutina | Používání |
|---|---|
abs, labs, , llabs_abs64 |
Vypočítá absolutní hodnotu celočíselného typu. |
acos, , acosfacosl |
Vypočítá kosinus oblouku. |
acosh, , acoshfacoshl |
Vypočítá hyperbolický kosinus arkus. |
asin, , asinfasinl |
Vypočítá arkus sinus. |
asinh, , asinhfasinhl |
Vypočítá hyperbolický arkusový sinus. |
atan, atanf, atanl, atan2, , atan2fatan2l |
Vypočítá arkus tangens. |
atanh, , atanhfatanhl |
Vypočítá hyperbolický arkus tangens. |
_atodbl, _atodbl_l |
Převede řetězec specifický pro národní prostředí na double |
atof, _atof_l |
Převede řetězec na double |
_atoflt, _atoflt_l, , _atoldbl_atoldbl_l |
Převede řetězec specifický pro národní prostředí na nebo floatlong double |
cbrt, , cbrtfcbrtl |
Vypočítá kořen datové krychle. |
ceil, , ceilfceill |
Vypočítá strop. |
_chgsign, , _chgsignf_chgsignl |
Vypočítá přídavnou inverzní funkci. |
_clear87, _clearfp |
Získá a vymaže registraci stavu s plovoucí desetinou čárkou. |
_control87, , _controlfp__control87_2 |
Získá a nastaví řídicí slovo s plovoucí desetinou čárkou. |
_controlfp_s |
Zabezpečená verze _controlfp |
copysign, copysignf, copysignl, _copysign, , _copysignf_copysignl |
Vrátí hodnotu, která má velikost jednoho argumentu a znaménko druhého argumentu. |
cos, , cosfcosl |
Vypočítá sinus. |
cosh, , coshfcoshl |
Vypočítá hyperbolický sinus. |
div, , ldivlldiv |
Vypočítá podíl a zbytek dvou celočíselné hodnoty. |
_ecvt, ecvt |
Převede řetězec double na řetězec. |
_ecvt_s |
Zabezpečená verze _ecvt |
erf, , erfferfl |
Vypočítá chybovou funkci. |
erfc, , erfcferfcl |
Vypočítá doplňkovou chybovou funkci. |
exp, , expfexpl |
Vypočítá exponenciální ex. |
exp2, , exp2fexp2l |
Vypočítá exponenciální hodnotu 2x. |
expm1, , expm1fexpm1l |
Vypočítá ex-1. |
fabs, , fabsffabsl |
Vypočítá absolutní hodnotu typu s plovoucí desetinou čárkou. |
_fcvt, fcvt |
Převede číslo s plovoucí desetinnou čárkou na řetězec. |
_fcvt_s |
Zabezpečená verze _fcvt |
fdim, , fdimffdiml |
Určuje kladný rozdíl mezi dvěma hodnotami. |
feclearexcept |
Vymaže zadané výjimky s plovoucí desetinou čárkou. |
fegetenv |
Uloží aktuální prostředí s plovoucí desetinou čárkou. |
fegetexceptflag |
Získá zadaný stav výjimky s plovoucí desetinou čárkou. |
fegetround |
Získá režim zaokrouhlování s plovoucí desetinou čárkou. |
feholdexcept |
Nastaví režim výjimky s plovoucí desetinou čárkou bez zastavení. |
feraiseexcept |
Vyvolá zadané výjimky s plovoucí desetinou čárkou. |
fesetenv |
Nastaví aktuální prostředí s plovoucí desetinou čárkou. |
fesetexceptflag |
Nastaví zadané příznaky stavu s plovoucí desetinou čárkou. |
fesetround |
Nastaví zadaný režim zaokrouhlování s plovoucí desetinou čárkou. |
fetestexcept |
Určuje, které příznaky stavu výjimky s plovoucí desetinou čárkou jsou nastaveny. |
feupdateenv |
Obnoví prostředí s plovoucí desetinou čárkou a potom vyvolá předchozí výjimky. |
floor, , floorffloorl |
Vypočítá podlahu. |
fma, , fmaffmal |
Vypočítá sloučený doplněk násobení. |
fmax, , fmaxffmaxl |
Vypočítá maximální počet argumentů. |
fmin, , fminffminl |
Vypočítá minimum argumentů. |
fmod, , fmodffmodl |
Vypočítá zbytek s plovoucí desetinou čárkou. |
_fpclass, _fpclassf |
Vrátí klasifikaci hodnoty s plovoucí desetinou čárkou. |
fpclassify |
Vrátí klasifikaci hodnoty s plovoucí desetinou čárkou. |
_fpieee_flt |
Nastaví obslužnou rutinu pro výjimky s plovoucí desetinou čárkou. |
_fpreset |
Obnoví prostředí s plovoucí desetinou čárkou. |
frexp, , frexpffrexpl |
Získá mantisu a exponent čísla s plovoucí desetinnou čárkou. |
_gcvt, gcvt |
Převede číslo s plovoucí desetinnou čárkou na řetězec. |
_gcvt_s |
Zabezpečená verze _gcvt |
_get_FMA3_enable, _set_FMA3_enable |
Získá nebo nastaví příznak pro použití FMA3 instrukce na x64 |
hypot, hypotf, hypotl, _hypot, , _hypotf_hypotl |
Vypočítá hypotenuse. |
ilogb, , ilogbfilogbl |
Vypočítá celočíselnou hodnotu exponentu base-2. |
imaxabs |
Vypočítá absolutní hodnotu celočíselného typu. |
imaxdiv |
Vypočítá podíl a zbytek dvou celočíselné hodnoty. |
isfinite, , _finite_finitef |
Určuje, zda je hodnota konečná. |
isgreater, isgreaterequal, isless, islessequal, , islessgreaterisunordered |
Porovnání pořadí dvou hodnot s plovoucí desetinnou čárkou |
isinf |
Určuje, zda je hodnota s plovoucí desetinou čárkou nekonečná. |
isnan, , _isnan_isnanf |
Testuje hodnotu s plovoucí desetinnou čárkou pro NaN. |
isnormal |
Testuje, zda je hodnota s plovoucí desetinou čárkou konečný i ne subnormální. |
_j0, , _j1_jn |
Vypočítá besselovu funkci. |
ldexp, , ldexpfldexpl |
Vypočítá x*2n |
lgamma, , lgammaflgammal |
Vypočítá přirozený logaritmus absolutní hodnoty funkce gama. |
llrint, , llrintfllrintl |
Zaokrouhlí hodnotu s plovoucí desetinou čárkou na nejbližší long long hodnotu. |
llround, , llroundfllroundl |
Zaokrouhlí hodnotu s plovoucí desetinou čárkou na nejbližší long long hodnotu. |
log, logf, logl, log10, , log10flog10l |
Vypočítá přirozený logaritmus nebo logaritmus base-10. |
log1p, , log1pflog1pl |
Vypočítá přirozený logaritmus 1+x. |
log2, , log2flog2l |
Vypočítá logaritmus base-2. |
logb, logbf, logbl, , _logb_logbf |
Vrátí exponent hodnoty s plovoucí desetinnou čárkou. |
lrint, , lrintflrintl |
Zaokrouhlí hodnotu s plovoucí desetinou čárkou na nejbližší long hodnotu. |
_lrotl, _lrotr |
Otočí celočíselnou hodnotu doleva nebo doprava. |
lround, , lroundflroundl |
Zaokrouhlí hodnotu s plovoucí desetinou čárkou na nejbližší long hodnotu. |
_matherr |
Výchozí obslužná rutina matematické chyby |
__max |
Makro, které vrací větší ze dvou hodnot |
__min |
Makro, které vrací menší ze dvou hodnot |
modf, , modffmodfl |
Rozdělí hodnotu s plovoucí desetinnou čárkou na zlomkové a celočíselné části. |
nan, , nanfnanl |
Vrátí tichou hodnotu NaN. |
nearbyint, , nearbyintfnearbyintl |
Vrátí zaokrouhlenou hodnotu. |
nextafter, nextafterf, nextafterl, , _nextafter_nextafterf |
Vrátí další reprezentovatelnou hodnotu s plovoucí desetinnou čárkou. |
nexttoward, , nexttowardfnexttowardl |
Vrátí další reprezentovatelnou hodnotu s plovoucí desetinnou čárkou. |
pow, , powfpowl |
Vrátí hodnotu xy |
remainder, , remainderfremainderl |
Vypočítá zbytek podílu dvou hodnot s plovoucí desetinou čárkou. |
remquo, , remquofremquol |
Vypočítá zbytek dvou celočíselné hodnoty. |
rint, , rintfrintl |
Zaokrouhlí hodnotu s plovoucí desetinou čárkou. |
_rotl, _rotl64, , _rotr_rotr64 |
Obměna bitů v celočíselném typu |
round, , roundfroundl |
Zaokrouhlí hodnotu s plovoucí desetinou čárkou. |
_scalb, _scalbf |
Škáluje argument o mocninu 2. |
scalbn, scalbnf, scalbnl, scalbln, , scalblnfscalblnl |
Vynásobí číslo s plovoucí desetinnou čárkou integrální mocninou FLT_RADIX |
_set_controlfp |
Nastaví řídicí slovo s plovoucí desetinou čárkou. |
_set_SSE2_enable |
Povolí nebo zakáže pokyny SSE2. |
signbit |
Testuje bit znaménka hodnoty s plovoucí desetinou čárkou. |
sin, , sinfsinl |
Vypočítá sinus. |
sinh, , sinhfsinhl |
Vypočítá hyperbolický sinus. |
sqrt, , sqrtfsqrtl |
Vypočítá druhou odmocninu. |
_status87, , _statusfp_statusfp2 |
Získá stavové slovo s plovoucí desetinou čárkou. |
strtof, _strtof_l |
Převede řetězec na float |
strtold, _strtold_l |
Převede řetězec na long double |
tan, , tanftanl |
Vypočítá tangens. |
tanh, , tanhftanhl |
Vypočítá hyperbolický tangens. |
tgamma, , tgammaftgammal |
Vypočítá funkci gama. |
trunc, , truncftruncl |
Zkrátí zlomkovou část. |
_wtof, _wtof_l |
Převede široký řetězec na double |
_y0, , _y1_yn |
Vypočítá besselovu funkci. |
Viz také
Rutiny UCRT (Universal C runtime) podle kategorie
Primitiva s plovoucí desetinnou čárkou