C-Unterstützung für komplexe Mathematik
Die Microsoft C-Runtime-Bibliothek (CRT) bietet komplexe mathematische Bibliotheksfunktionen, einschließlich aller funktionen, die von ISO C99 benötigt werden. Der Compiler unterstützt weder eine noch eine complex
_Complex
Schlüsselwort (keyword), daher verwendet die Microsoft-Implementierung Strukturtypen, um komplexe Zahlen darzustellen.
Diese Funktionen werden implementiert, damit die Sprache ebenso leistungsfähig wie korrekt ist. 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 Einheit der geringsten Genauigkeit (ULP) des korrekt gerundeten Ergebnisses, es kann jedoch vorkommen, dass es eine größere Ungenauigkeit gibt.
Die komplexe Mathematikroutinen bauen für die Implementierung auf die Gleitkommafunktionen in der mathematischen Bibliothek. Diese Funktionen 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.
Typen, die in der komplexen Mathematik verwendet werden
Die Microsoft-Implementierung des complex.h
Headers definiert diese Typen als Entsprechungen für die systemeigenen systemeigenen C99-Standardtypen:
Standardtyp | Microsoft-Typ |
---|---|
float complex oder float _Complex |
_Fcomplex |
double complex oder double _Complex |
_Dcomplex |
long double complex oder long double _Complex |
_Lcomplex |
Die math.h
Kopfzeile definiert einen separaten Typ, struct _complex
der für die _cabs
Funktion verwendet wird. Der struct _complex
Typ wird nicht von den entsprechenden komplexen mathematischen Funktionen cabs
, , cabsf
, cabsl
verwendet.
Komplexe Konstanten und Makros
I
wird als komplexer Typ _Fcomplex
definiert, der von { 0.0f, 1.0f }
.
Trigonometrische Funktionen
Function | Beschreibung |
---|---|
cacos , cacosf , cacosl |
Berechnen des komplexen Arcuscosinuswerts einer komplexen Zahl |
casin , casinf , casinl |
Berechnen des komplexen Arcussinuswerts einer komplexen Zahl |
catan , catanf , catanl |
Berechnen des komplexen Arcustangenswerts einer komplexen Zahl |
ccos , ccosf , ccosl |
Berechnen des komplexen Cosinuswerts einer komplexen Zahl |
csin , csinf , csinl |
Berechnen des komplexen Sinuswerts einer komplexen Zahl |
ctan , ctanf , ctanl |
Berechnen des komplexen Tangenswerts einer komplexen Zahl |
Hyperbolische Funktionen
Function | Beschreibung |
---|---|
cacosh , cacoshf , cacoshl |
Berechnen des komplexen hyperbolischen Arcuscosinuswerts einer komplexen Zahl |
casinh , casinhf , casinhl |
Berechnen des komplexen hyperbolischen Arcussinuswerts einer komplexen Zahl |
catanh , catanhf , catanhl |
Berechnet den komplexen hyperbolischen Arcustangens einer komplexen Zahl |
ccosh , ccoshf , ccoshl |
Berechnen des komplexen hyperbolischen Cosinuswerts einer komplexen Zahl |
csinh , csinhf , csinhl |
Berechnen des komplexen hyperbolischen Sinuswerts einer komplexen Zahl |
ctanh , ctanhf , ctanhl |
Berechnet den komplexen hyperbolischen Tangens einer komplexen Zahl |
Exponentielle und logarithmische Funktionen
Function | Beschreibung |
---|---|
cexp , cexpf , cexpl |
Berechnen der Exponentialzahl zur Basis e einer komplexen Zahl |
clog , clogf , clogl |
Berechnen des natürlichen Logarithmus zur Basis e einer komplexen Zahl |
clog10 , clog10f , clog10l |
Berechnen des Logarithmus zur Basis 10 einer komplexen Zahl |
Potenzfunktionen und Absolutwertfunktionen
Function | Beschreibung |
---|---|
cabs , cabsf , cabsl |
Berechnen des komplexen Absolutwerts (auch Norm, Modulo oder Größe genannt) für eine komplexe Zahl |
cpow , cpowf , cpowl |
Berechnen der komplexen Leistungsfunktion |
csqrt , csqrtf , csqrtl |
Berechnen der komplexen Quadratwurzel einer komplexen Zahl |
Bearbeitungsfunktionen
Function | Beschreibung |
---|---|
_Cbuild , _FCbuild , _LCbuild |
Erstellen einer komplexen Zahl aus realen und nicht realen Teilen |
carg , cargf , cargl |
Berechnen des Arguments (also des Phasenwinkels) einer komplexen Zahl |
cimag , cimagf , cimagl |
Berechnen des Imaginärteils einer komplexen Zahl |
conj , conjf , conjl |
Berechnen der konjugierten Zahl einer komplexen Zahl |
cproj , cprojf , cprojl |
Berechnen einer Projektion einer komplexen Zahl auf die Riemannsche Zahlenkugel |
creal , crealf , creall |
Berechnen des Realteils einer komplexen Zahl |
norm , normf , norml |
Berechnen der quadratischen Größe einer komplexen Zahl |
Vorgangsfunktionen
Da komplexe Zahlen kein systemeigener Typ im Microsoft-Compiler sind, werden die standardmäßigen arithmetischen Operatoren nicht für komplexe Typen definiert. Der Einfachheit halber werden diese komplexen mathematischen Bibliotheksfunktionen bereitgestellt, um die beschränkte Bearbeitung komplexer Zahlen im Benutzercode zu ermöglichen:
Function | Beschreibung |
---|---|
_Cmulcc , _FCmulcc , _LCmulcc |
Addition zweier komplexer Zahlen |
_Cmulcr , _FCmulcr , _LCmulcr |
Multiplikation einer komplexe Zahl und einer Gleitkommazahl |
Siehe auch
Typgenerische Mathematik
Universelle C-Laufzeitroutinen nach Kategorie
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