Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Universal C Runtime-bibliotheek (UCRT) biedt veel integrale en drijvende-komma wiskundige bibliotheekfuncties, waaronder alle functies die vereist zijn voor ISO C99. De drijvendekommafuncties worden geïmplementeerd om de prestaties te verdelen met juistheid. Omdat het produceren van het correct afgeronde resultaat verboden duur kan zijn, zijn deze functies ontworpen om efficiënt een nauwe benadering te produceren van het correct afgeronde resultaat. In de meeste gevallen is het resultaat dat wordt geproduceerd binnen +/-1 ULP (eenheid van minimale precisie) van het correct afgeronde resultaat, hoewel er gevallen kunnen zijn waarin er grotere onnauwkeurigheid is.
Voor ISO C Standard 11 (C11) en hoger biedt de <tgmath.h>
header, naast het opnemen <math.h>
en <complex.h>
, macro's die een bijbehorende wiskundige functie aanroepen op basis van de typen parameters. Zie Type-generic wiskundige voor meer informatie.
Veel van de rekenbibliotheekfuncties met drijvende komma hebben verschillende implementaties voor verschillende CPU-architecturen. De 32-bits x86 CRT kan bijvoorbeeld een andere implementatie hebben dan de 64-bits x64 CRT. Daarnaast kunnen sommige functies meerdere implementaties hebben voor een bepaalde CPU-architectuur. De meest efficiënte implementatie wordt dynamisch geselecteerd tijdens runtime, afhankelijk van de instructiesets die door de CPU worden ondersteund. In de 32-bits x86 CRT hebben sommige functies bijvoorbeeld zowel een x87-implementatie als een SSE2-implementatie. Wanneer u een CPU gebruikt die ondersteuning biedt voor SSE2, wordt de snellere SSE2-implementatie gebruikt. Bij uitvoering op een CPU die geen ondersteuning biedt voor SSE2, wordt de tragere x87-implementatie gebruikt. Omdat verschillende implementaties van de wiskundige bibliotheekfuncties verschillende CPU-instructies en verschillende algoritmen kunnen gebruiken om hun resultaten te produceren, kunnen de functies verschillende resultaten opleveren voor CPU's. In de meeste gevallen bevinden de resultaten zich binnen +/-1 ULP van het correct afgeronde resultaat, maar de werkelijke resultaten kunnen per CPU verschillen.
Nieuwere versies van het UCRT kunnen de precisie en nauwkeurigheid van de rekenkundige bibliotheekfuncties met drijvende komma verbeteren. Omdat het UCRT deel uitmaakt van het Windows-besturingssysteem, krijgt u mogelijk verschillende resultaten voor deze functies op verschillende besturingssysteemversies of tussen foutopsporing en release-builds. Hoewel het niet wordt aanbevolen, kunt u statisch koppelen aan het UCRT om consistente resultaten te garanderen als u deze functies nodig hebt, overal identieke resultaten opleveren.
Vorige 16-bits versies van Microsoft C/C++ en Microsoft Visual C++ ondersteunden het long double
type als een 80-bits drijvendekommagegevenstype. In latere versies van Visual C++ is het long double
gegevenstype een 64-bits drijvendekommagegevenstype dat identiek is aan het double
type. De compiler behandelt long double
en double
als afzonderlijke typen, maar de long double
functies zijn identiek aan hun double
tegenhangers. De CRT biedt long double
versies van de wiskundige functies voor compatibiliteit met ISO C99-broncode, maar houd er rekening mee dat de binaire weergave kan verschillen van andere compilers.
Ondersteunde wiskundige en drijvende-kommaroutines
Routine | Gebruik |
---|---|
abs , , , labs llabs _abs64 |
Berekent de absolute waarde van een geheel getaltype |
acos , , acosf acosl |
Berekent de boogcosinus |
acosh , , acoshf acoshl |
Berekent de cosinus hyperbolische boog |
asin , , asinf asinl |
Berekent de boogsinus |
asinh , , asinhf asinhl |
Berekent de sinus van de hyperbolische boog |
atan , , atanf atanl , atan2 , , , atan2f atan2l |
Berekent de boogtangens |
atanh , , atanhf atanhl |
Berekent de tangens van de hyperbolische boog |
_atodbl , _atodbl_l |
Converteert een landinstellingenspecifieke tekenreeks naar een double |
atof , _atof_l |
Converteert een tekenreeks naar een double |
_atoflt , , , _atoflt_l _atoldbl _atoldbl_l |
Converteert een landinstellingenspecifieke tekenreeks naar een float of long double |
cbrt , , cbrtf cbrtl |
Berekent de kubushoofdmap |
ceil , , ceilf ceill |
Berekent het plafond |
_chgsign , , _chgsignf _chgsignl |
Berekent de additieve inverse |
_clear87 , _clearfp |
Hiermee wordt het drijvendekommastatusregister ophaalt en gewist |
_control87 , , _controlfp __control87_2 |
Hiermee haalt u het besturingselementwoord met drijvende komma op en stelt u deze in |
_controlfp_s |
Beveiligde versie van _controlfp |
copysign , , copysignf copysignl , _copysign , , , _copysignf _copysignl |
Retourneert een waarde met de grootte van het ene argument en het teken van een ander argument |
cos , , cosf cosl |
Berekent de sinus |
cosh , , coshf coshl |
Berekent de sinus hyperbolicus |
div , , ldiv lldiv |
Berekent het quotiënt en de rest van twee gehele getallen |
_ecvt , ecvt |
Converteert een double naar een tekenreeks |
_ecvt_s |
Beveiligde versie van _ecvt |
erf , , erff erfl |
Berekent de foutfunctie |
erfc , , erfcf erfcl |
Berekent de complementaire foutfunctie |
exp , , expf expl |
Berekent de exponentiële ex |
exp2 , , exp2f exp2l |
Berekent de exponentiële 2x |
expm1 , , expm1f expm1l |
Berekent e x-1 |
fabs , , fabsf fabsl |
Berekent de absolute waarde van een drijvende-kommatype |
_fcvt , fcvt |
Converteert een drijvende-kommanummer naar een tekenreeks |
_fcvt_s |
Beveiligde versie van _fcvt |
fdim , , fdimf fdiml |
Bepaalt het positieve verschil tussen twee waarden |
feclearexcept |
Opgegeven drijvendekomma-uitzonderingen wissen |
fegetenv |
Slaat de huidige drijvendekommaomgeving op |
fegetexceptflag |
Hiermee haalt u de opgegeven uitzonderingsstatus voor drijvende komma op |
fegetround |
Hiermee haalt u de afrondingsmodus met drijvende komma op |
feholdexcept |
Hiermee stelt u de non-stop uitzonderingsmodus voor zwevende komma's in |
feraiseexcept |
Hiermee worden de opgegeven drijvendekomma-uitzonderingen gemaakt |
fesetenv |
Hiermee stelt u de huidige omgeving met drijvende komma in |
fesetexceptflag |
Hiermee stelt u de opgegeven drijvendekommagestatusvlagmen in |
fesetround |
Hiermee stelt u de opgegeven afrondingsmodus met drijvende komma in |
fetestexcept |
Bepaalt welke drijvendekommage uitzonderingsstatusvlagmen zijn ingesteld |
feupdateenv |
Herstelt een drijvende-kommaomgeving en genereert vervolgens eerdere uitzonderingen |
floor , , floorf floorl |
Berekent de vloer |
fma , , fmaf fmal |
Berekent een samenvoeging van een vermenigvuldigings-add |
fmax , , fmaxf fmaxl |
Berekent het maximum van de argumenten |
fmin , , fminf fminl |
Berekent het minimum van de argumenten |
fmod , , fmodf fmodl |
Berekent de rest van het drijvende komma |
_fpclass , _fpclassf |
Geeft als resultaat de classificatie van een drijvende-kommawaarde |
fpclassify |
Geeft als resultaat de classificatie van een drijvende-kommawaarde |
_fpieee_flt |
Hiermee stelt u een handler in voor uitzonderingen met drijvende komma |
_fpreset |
Stelt de omgeving met drijvende komma opnieuw in |
frexp , , frexpf frexpl |
Haalt de mantissa en exponent van een drijvendekommagetal |
_gcvt , gcvt |
Converteert een drijvende-kommanummer naar een tekenreeks |
_gcvt_s |
Beveiligde versie van _gcvt |
_get_FMA3_enable , _set_FMA3_enable |
Hiermee haalt u een vlag op of stelt u een vlag in voor het gebruik van FMA3-instructies op x64 |
hypot , , hypotf hypotl , _hypot , , , _hypotf _hypotl |
Berekent de hypotenuse |
ilogb , , ilogbf ilogbl |
Berekent het gehele getal met grondtal 2 exponent |
imaxabs |
Berekent de absolute waarde van een geheel getaltype |
imaxdiv |
Berekent het quotiënt en de rest van twee gehele getallen |
isfinite , , _finite _finitef |
Bepaalt of een waarde eindig is |
isgreater , , isgreaterequal isless , islessequal , , , islessgreater isunordered |
De volgorde van twee waarden met drijvende komma vergelijken |
isinf |
Bepaalt of een drijvende-kommawaarde oneindig is |
isnan , , _isnan _isnanf |
Test een drijvende-kommawaarde voor NaN |
isnormal |
Test of een drijvende-kommawaarde zowel eindig als niet subnormaal is |
_j0 , , _j1 _jn |
Berekent de Bessel-functie |
ldexp , , ldexpf ldexpl |
Berekent x*2n |
lgamma , , lgammaf lgammal |
Berekent de natuurlijke logaritme van de absolute waarde van de gammafunctie |
llrint , , llrintf llrintl |
Rondt een drijvende-kommawaarde af op de dichtstbijzijnde long long waarde |
llround , , llroundf llroundl |
Rondt een drijvende-kommawaarde af op de dichtstbijzijnde long long waarde |
log , , logf logl , log10 , , , log10f log10l |
Berekent de natuurlijke of base-10 logaritme |
log1p , , log1pf log1pl |
Berekent de natuurlijke logaritme van 1+x |
log2 , , log2f log2l |
Berekent de logaritme met grondtal 2 |
logb
logbf , logbl , _logb _logbf |
Geeft als resultaat de exponent van een drijvende-kommawaarde |
lrint , , lrintf lrintl |
Rondt een drijvende-kommawaarde af op de dichtstbijzijnde long waarde |
_lrotl , _lrotr |
Hiermee draait u een geheel getal naar links of rechts |
lround , , lroundf lroundl |
Rondt een drijvende-kommawaarde af op de dichtstbijzijnde long waarde |
_matherr |
De standaard-wiskundige fouthandler |
__max |
Macro die de grotere van twee waarden retourneert |
__min |
Macro die de kleinste van twee waarden retourneert |
modf , , modff modfl |
Splitst een drijvende-kommawaarde in fractionele en gehele getallen |
nan , , nanf nanl |
Geeft als resultaat een stille NaN-waarde |
nearbyint , , nearbyintf nearbyintl |
Retourneert de afgeronde waarde |
nextafter
nextafterf , nextafterl , _nextafter _nextafterf |
Retourneert de volgende vertegenwoordigbare drijvende-kommawaarde |
nexttoward , , nexttowardf nexttowardl |
Retourneert de volgende vertegenwoordigbare drijvende-kommawaarde |
pow , , powf powl |
Geeft als resultaat de waarde van x y |
remainder , , remainderf remainderl |
Berekent de rest van het quotiënt van twee drijvendekommawaarden |
remquo , , remquof remquol |
Berekent de rest van twee gehele getallen |
rint , , rintf rintl |
Rondt een drijvende-kommawaarde af |
_rotl , , , _rotl64 _rotr _rotr64 |
Hiermee worden bits in gehele getallen gedraaid |
round , , roundf roundl |
Rondt een drijvende-kommawaarde af |
_scalb , _scalbf |
Het argument schalen met een macht van 2 |
scalbn , , scalbnf scalbnl , scalbln , , , scalblnf scalblnl |
Vermenigvuldigt een drijvendekommagetal met een integraal vermogen van FLT_RADIX |
_set_controlfp |
Hiermee stelt u het besturingselementwoord voor drijvende komma in |
_set_SSE2_enable |
SSE2-instructies in- of uitschakelen |
signbit |
Test de teken-bit van een drijvende-kommawaarde |
sin , , sinf sinl |
Berekent de sinus |
sinh , , sinhf sinhl |
Berekent de sinus hyperbolicus |
sqrt , , sqrtf sqrtl |
Berekent de vierkantswortel |
_status87 , , _statusfp _statusfp2 |
Hiermee haalt u het statuswoord drijvende komma op |
strtof , _strtof_l |
Converteert een tekenreeks naar een float |
strtold , _strtold_l |
Converteert een tekenreeks naar een long double |
tan , , tanf tanl |
Berekent de tangens |
tanh , , tanhf tanhl |
Berekent de tangens hyperbolicus |
tgamma , , tgammaf tgammal |
Berekent de gammafunctie |
trunc , , truncf truncl |
Kapt het breukdeel af |
_wtof , _wtof_l |
Converteert een brede tekenreeks naar een double |
_y0 , , _y1 _yn |
Berekent de Bessel-functie |
Zie ook
Universal C-runtimeroutines per categorie
Primitieven met drijvende komma