Mathematische Unterstützung und Gleitkommaunterstützung
Die Universelle C-Runtime-Bibliothek (UCRT) bietet viele integrale und gleitkommabasierte mathematische Bibliotheksfunktionen, einschließlich aller Funktionen, die von ISO C99 benötigt werden. Die Gleitkommafunktionen werden implementiert, damit die Leistung und Richtigkeit gleichwertig sichergestellt wird. Da das korrekt gerundete Ergebnis nur sehr teuer errechenbar ist, wurden diese Funktionen dazu entworfen, eine starke Annäherung an das korrekt gerundete Ergebnis zu erzielen. In den meisten Fällen liegt das erzeugte Ergebnis innerhalb von +/-1 ULP (Einheit der geringsten Genauigkeit) des korrekt gerundeten Ergebnisses, es kann jedoch vorkommen, dass es eine größere Ungenauigkeit gibt.
Für ISO C Standard 11 (C11) und höher stellt der <tgmath.h>
Header zusätzlich zum Einschließen und <complex.h>
Bereitstellen <math.h>
von Makros, die eine entsprechende mathematische Funktion basierend auf den Parametertypen aufrufen, bereit. Ausführliche Informationen finden Sie unter "Typgenerika" .
Viele der Gleitkommafunktionen in der mathematischen Bibliothek haben unterschiedliche Implementierungen für verschiedene CPU-Architekturen. Die 32-Bit-x86-CRT hat möglicherweise eine andere Implementierung als die 64-Bit x64 CRT. Darüber hinaus haben möglicherweise einige der Funktionen mehrere Implementierungen für eine bestimmte CPU-Architektur. Eine möglichst effiziente Implementierung wird je nach den von der CPU unterstützten Anweisungssets dynamisch zur Laufzeit ausgewählt. In der 32-Bit-x86-CRT haben einige Funktionen eine x87- und eine SSE2-Implementierung. Wenn eine CPU verwendet wird, die SSE2 unterstützt, wird die schnellere SSE2-Implementierung verwendet. Wenn sie auf einer CPU ausgeführt wird, die SSE2 nicht unterstützt, wird die langsamere x87-Implementierung verwendet. Da verschiedene Implementierungen der Funktionen der mathematischen Bibliothek verschiedene CPU-Anweisungen und andere Algorithmen verwenden, um Ergebnisse zu erzielen, unterscheiden sich die Ergebnisse in den verschiedenen CPUs möglicherweise. In den meisten Fällen befinden sich die Ergebnisse innerhalb von +/-1 ULP des korrekt gerundeten Ergebnisses, aber die tatsächlichen Ergebnisse können zwischen CPUs variieren.
16-Bit-Vorgängerversionen von Microsoft C/C++ und Microsoft Visual C++ unterstützten den Typ long double
als einen Gleitkomma-Datentyp mit 80-Bit Präzision. In späteren Versionen von Visual C++ ist der long double
-Datentyp ein 64-Bit-präziser Gleitkomma-Datentyp, der identisch mit Typ double
ist. Der Compiler verarbeitet long double
und double
wie unterschiedliche Typen, die long double
-Funktionen sind jedoch identisch mit ihren double
-Gegenstücken. Die CRT stellt long double
-Versionen der mathematischen Funktionen für die ISO C99-Quellcodekompatibilität bereit. Beachten Sie aber, dass die binäre Darstellung von anderen Compilern abweichen kann.
Unterstützte mathematische und Gleitkommaroutinen
Routine | Verwendung |
---|---|
abs , labs , llabs , _abs64 |
Berechnet den absoluten Wert eines Ganzzahltyps |
acos , acosf , acosl |
Berechnet den Arkuskosinus |
acosh , acoshf , acoshl |
Berechnet den hyperbolischen Arkuskosinus |
asin , asinf , asinl |
Berechnet den Arkussinus |
asinh , asinhf , asinhl |
Berechnet den hyperbolischen Arkussinus |
atan , atanf , atanl , atan2 , atan2f , atan2l |
Berechnet den Arkustangens |
atanh , atanhf , atanhl |
Berechnet den hyperbolischen Arkustangens |
_atodbl , _atodbl_l |
Konvertiert eine gebietsschemaspezifische Zeichenfolge in eine double |
atof , _atof_l |
Konvertiert eine Zeichenfolge in eine double |
_atoflt , _atoflt_l , _atoldbl , _atoldbl_l |
Konvertiert eine gebietsschemaspezifische Zeichenfolge in eine float oder long double |
cbrt , cbrtf , cbrtl |
Berechnet die Kubikwurzel |
ceil , ceilf , ceill |
Berechnet den Höchstwert |
_chgsign , _chgsignf , _chgsignl |
Berechnet das additive Inverse (Gegenzahl) |
_clear87 , _clearfp |
Ruft das Gleitkommastatusregister ab und löscht dieses |
_control87 , _controlfp , __control87_2 |
Ruft das Gleitkommasteuerwort ab und legt es fest. |
_controlfp_s |
Sichere Version von _controlfp |
copysign , copysignf , copysignl , _copysign , _copysignf , _copysignl |
Gibt einen Wert zurück, der die Größe eines Arguments und das Zeichen eines anderen Arguments aufweist |
cos , cosf , cosl |
Berechnet den Sinus |
cosh , coshf , coshl |
Berechnet den hyperbolischen Sinus |
div , ldiv , lldiv |
Berechnet den Quotienten und den Rest von zwei ganzzahligen Werten |
_ecvt , ecvt |
Konvertiert eine double Zeichenfolge in eine Zeichenfolge. |
_ecvt_s |
Sichere Version von _ecvt |
erf , erff , erfl |
Berechnet die Fehlerfunktion |
erfc , erfcf , erfcl |
Berechnet die komplementäre Fehlerfunktion |
exp , expf , expl |
Berechnet den exponentiellen Wert ex |
exp2 , exp2f , exp2l |
Berechnet den exponentiellen Wert 2x |
expm1 , expm1f , expm1l |
Berechnet ex-1 |
fabs , fabsf , fabsl |
Berechnet den absoluten Wert eines Gleitkommatyps |
_fcvt , fcvt |
Konvertiert eine Gleitkommazahl in eine Zeichenfolge |
_fcvt_s |
Sichere Version von _fcvt |
fdim , fdimf , fdiml |
Bestimmt den positiven Unterschied zwischen zwei Werten |
feclearexcept |
Löscht die angegebenen Gleitkommaausnahmen |
fegetenv |
Speichert die aktuelle Gleitkommaausnahme |
fegetexceptflag |
Ruft den Status der angegebenen Gleitkommaausnahme ab |
fegetround |
Ruft den Rundungsmodus des Gleitkommas ab |
feholdexcept |
Legt den ununterbrochenen Modus der Gleitkommaausnahme fest |
feraiseexcept |
Löst die angegebenen Gleitkommaausnahmen aus |
fesetenv |
Legt die aktuelle Gleitkommaumgebung fest |
fesetexceptflag |
Legt die angegebenen Gleitkomma-Statusflags fest |
fesetround |
Legt den angegebenen Rundungsmodus des Gleitkommas fest |
fetestexcept |
Bestimmt, welche Gleitkommaausnahme-Statusflags festgelegt werden |
feupdateenv |
Stellt eine Gleitkommaumgebung wieder her und löst dann vorherige Ausnahmen aus |
floor , floorf , floorl |
Berechnet den Tiefstwert |
fma , fmaf , fmal |
Berechnet eine Fused-multiply-add-Operation |
fmax , fmaxf , fmaxl |
Berechnet die maximale Anzahl der Argumente |
fmin , fminf , fminl |
Berechnet das Minimum der Argumente. |
fmod , fmodf , fmodl |
Berechnet den Gleitkommarest |
_fpclass , _fpclassf |
Gibt die Klassifizierung eines Gleitkommawerts zurück |
fpclassify |
Gibt die Klassifizierung eines Gleitkommawerts zurück |
_fpieee_flt |
Legt einen Handler für Gleitkommaausnahmen fest |
_fpreset |
Setzt die Gleitkommaumgebung zurück |
frexp , frexpf , frexpl |
Ruft die Mantisse und den Exponenten einer Gleitkommazahl ab |
_gcvt , gcvt |
Konvertiert eine Gleitkommazahl in eine Zeichenfolge |
_gcvt_s |
Sichere Version von _gcvt |
_get_FMA3_enable , _set_FMA3_enable |
Ruft ein Flag für die Verwendung von FMA3-Anweisungen auf x64 ab, oder legt es fest |
hypot , hypotf , hypotl , _hypot , _hypotf , _hypotl |
Berechnet die Hypotenuse |
ilogb , ilogbf , ilogbl |
Berechnet den ganzzahligen Exponenten zur Basis 2 |
imaxabs |
Berechnet den absoluten Wert eines Ganzzahltyps |
imaxdiv |
Berechnet den Quotienten und den Rest von zwei ganzzahligen Werten |
isfinite , _finite , _finitef |
Bestimmt, ob ein Wert endlich ist |
isgreater , isgreaterequal , isless , islessequal , islessgreater , isunordered |
Reihenfolge zweier Gleitkommawerte vergleichen |
isinf |
Bestimmt, ob ein Gleitkommawert endlich ist |
isnan , _isnan , _isnanf |
Testet einen Gleitkommawert auf NaN |
isnormal |
Testet, ob ein Gleitkommawert sowohl unendlich als auch subnormal ist |
_j0 , _j1 , _jn |
Berechnet die Bessel-Funktion |
ldexp , ldexpf , ldexpl |
Berechnet x*2n |
lgamma , lgammaf , lgammal |
Berechnet den natürlichen Logarithmus des absoluten Werts der Gammafunktion |
llrint , llrintf , llrintl |
Rundet einen Gleitkommawert auf den nächsten long long Wert ab. |
llround , llroundf , llroundl |
Rundet einen Gleitkommawert auf den nächsten long long Wert ab. |
log , logf , logl , log10 , log10f , log10l |
Berechnet den natürlichen Logarithmus oder den Logarithmus zur Basis 10 |
log1p , log1pf , log1pl |
Berechnet den natürlichen Logarithmus von 1+x |
log2 , log2f , log2l |
Berechnet den Logarithmus zur Basis 2 |
logb , logbf , logbl , _logb , _logbf |
Gibt den Exponenten eines Gleitkommawerts zurück |
lrint , lrintf , lrintl |
Rundet einen Gleitkommawert auf den nächsten long Wert ab. |
_lrotl , _lrotr |
Rotiert einen ganzzahligen Wert nach links oder rechts |
lround , lroundf , lroundl |
Rundet einen Gleitkommawert auf den nächsten long Wert ab. |
_matherr |
Der Standardhandler für mathematische Fehler |
__max |
Ein Makro, das den größeren von zwei Werten zurückgibt |
__min |
Ein Makro, das den kleineren von zwei Werten zurückgibt |
modf , modff , modfl |
Teilt einen Gleitkommawert in Nachkommastellen und ganze Zahlen |
nan , nanf , nanl |
Gibt einen stillen NaN-Wert zurück. |
nearbyint , nearbyintf , nearbyintl |
Gibt den gerundeten Wert zurück |
nextafter , nextafterf , nextafterl , _nextafter , _nextafterf |
Gibt den nächsten darstellbaren Gleitkommawert zurück |
nexttoward , nexttowardf , nexttowardl |
Gibt den nächsten darstellbaren Gleitkommawert zurück |
pow , powf , powl |
Gibt den Wert von x y |
remainder , remainderf , remainderl |
Berechnet den Rest des Quotienten aus zwei Gleitkommawerten |
remquo , remquof , remquol |
Berechnet den Rest von zwei ganzzahligen Werten |
rint , rintf , rintl |
Rundet einen Gleitkommawert |
_rotl , _rotl64 , _rotr , _rotr64 |
Rotiert Bits in ganzzahligen Typen |
round , roundf , roundl |
Rundet einen Gleitkommawert |
_scalb , _scalbf |
Skaliert das Argument mit einer Zweierpotenz |
scalbn , scalbnf , scalbnl , scalbln , scalblnf , scalblnl |
Multipliziert eine Gleitkommazahl durch eine integrale Potenz von FLT_RADIX |
_set_controlfp |
Legt das Gleitkommasteuerwort fest |
_set_SSE2_enable |
Aktiviert oder deaktiviert SSE2-Anweisungen |
signbit |
Testet das Vorzeichenbit eines Gleitkommawerts |
sin , sinf , sinl |
Berechnet den Sinus |
sinh , sinhf , sinhl |
Berechnet den hyperbolischen Sinus |
sqrt , sqrtf , sqrtl |
Berechnet die Quadratwurzel |
_status87 , _statusfp , _statusfp2 |
Ruft das Gleitkommastatuswort ab |
strtof , _strtof_l |
Konvertiert eine Zeichenfolge in eine float |
strtold , _strtold_l |
Konvertiert eine Zeichenfolge in eine long double |
tan , tanf , tanl |
Berechnet den Tangens |
tanh , tanhf , tanhl |
Berechnet den hyperbolischen Tangens |
tgamma , tgammaf , tgammal |
Berechnet die Gammafunktion |
trunc , truncf , truncl |
Verkürzt die Nachkommastellen |
_wtof , _wtof_l |
Konvertiert eine breite Zeichenfolge in eine double |
_y0 , _y1 , _yn |
Berechnet die Bessel-Funktion |
Siehe auch
Universelle C-Laufzeitroutinen nach Kategorie
Gleitkommaprimitive
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für