Prise en charge des fonctions mathématiques complexes C
La bibliothèque Microsoft C Runtime (CRT) fournit des fonctions de bibliothèque mathématique complexes, y compris celles requises par ISO C99. Le compilateur ne prend pas directement en charge une complex
ou _Complex
mot clé, par conséquent, l’implémentation de Microsoft utilise des types de structure pour représenter des nombres complexes.
Ces fonctions sont implémentées pour équilibrer le niveau de performance avec exactitude. Étant donné que la production du résultat correctement arrondi peut atteindre un coût prohibitif, ces fonctions sont conçues pour produire efficacement une approximation précise du résultat correctement arrondi. Dans la plupart des cas, le résultat produit se trouve dans l’unité +/-1 de la précision minimale (ULP) du résultat arrondi correctement, bien qu’il y ait des cas où il y a une plus grande inexactitude.
Les routines mathématiques complexes s’appuient sur les fonctions mathématiques à virgule flottante de la bibliothèque pour leur implémentation. Ces fonctions ont des implémentations différentes pour des architectures de processeur différentes. Par exemple, l’implémentation de la bibliothèque CRT x86 32 bits peut être différente de celle de la bibliothèque CRT x64 64 bits. De plus, certaines fonctions peuvent avoir plusieurs implémentations pour une architecture de processeur donnée. L’implémentation la plus efficace est sélectionnée de façon dynamique au moment de l’exécution selon les jeux d’instructions pris en charge par le processeur. Par exemple, dans la bibliothèque CRT x86 32 bits, certaines fonctions ont à la fois une implémentation x87 et une implémentation SSE2. Lors d’une exécution sur un processeur qui prend en charge SSE2, l’implémentation SSE2 plus rapide est utilisée. Lors de l’exécution sur un processeur qui ne prend pas en charge SSE2, l’implémentation x87 plus lente est utilisée. Étant donné que les différentes implémentations des fonctions de bibliothèque mathématique peuvent utiliser des instructions de processeur différentes et des algorithmes différents pour produire leurs résultats, les fonctions peuvent produire des résultats différents selon les processeurs. Dans la plupart des cas, les résultats se trouvent dans l’ULP +/-1 du résultat correctement arrondi, mais les résultats réels peuvent varier entre les PROCESSEURs.
Types utilisés dans les calculs complexes
L’implémentation Microsoft de l’en-tête complex.h
définit ces types comme équivalents pour les types complexes natifs standard C99 :
Type standard | Type Microsoft |
---|---|
float complex ou float _Complex |
_Fcomplex |
double complex ou double _Complex |
_Dcomplex |
long double complex ou long double _Complex |
_Lcomplex |
L’en-tête math.h
définit un type distinct, struct _complex
utilisé pour la _cabs
fonction. Le struct _complex
type n’est pas utilisé par les fonctions cabs
mathématiques complexes équivalentes , cabsf
. cabsl
Constantes et macros complexes
I
est défini comme le type _Fcomplex
complexe initialisé par { 0.0f, 1.0f }
.
Fonctions trigonométriques
Fonction | Description |
---|---|
cacos , cacosf , cacosl |
Calcul de l’arc cosinus complexe d’un nombre complexe |
casin , casinf , casinl |
Calcul de l’arc sinus complexe d’un nombre complexe |
catan , catanf , catanl |
Calcul de l’arc tangente complexe d’un nombre complexe |
ccos , ccosf , ccosl |
Calcul du cosinus complexe d’un nombre complexe |
csin , csinf , csinl |
Calcul du sinus complexe d’un nombre complexe |
ctan , ctanf , ctanl |
Calcul de la tangente complexe d’un nombre complexe |
Fonctions hyperboliques
Fonction | Description |
---|---|
cacosh , cacoshf , cacoshl |
Calcul de l’arc cosinus hyperbolique complexe d’un nombre complexe |
casinh , casinhf , casinhl |
Calcul de l’arc sinus hyperbolique complexe d’un nombre complexe |
catanh , catanhf , catanhl |
Calcul de l’arc tangente hyperbolique complexe d’un nombre complexe |
ccosh , ccoshf , ccoshl |
Calcul du cosinus hyperbolique complexe d’un nombre complexe |
csinh , csinhf , csinhl |
Calcul du sinus hyperbolique complexe d’un nombre complexe |
ctanh , ctanhf , ctanhl |
Calcul de la tangente hyperbolique complexe d’un nombre complexe |
Fonctions exponentielles et logarithmiques
Fonction | Description |
---|---|
cexp , cexpf , cexpl |
Calcul de la valeur exponentielle de base e complexe d’un nombre complexe |
clog , clogf , clogl |
Calcul du logarithme népérien (base-e) complexe d’un nombre complexe |
clog10 , clog10f , clog10l |
Calcul du logarithme en base-10 complexe d’un nombre complexe |
Fonctions valeur absolue et puissance
Fonction | Description |
---|---|
cabs , cabsf , cabsl |
Calcul de la valeur absolue complexe (également appelée norme, module ou magnitude) d’un nombre complexe |
cpow , cpowf , cpowl |
Calcul de la fonction de puissance complexe |
csqrt , csqrtf , csqrtl |
Calcul de la racine carrée complexe d’un nombre complexe |
Fonctions de manipulation
Fonction | Description |
---|---|
_Cbuild , _FCbuild , _LCbuild |
Construction d’un nombre complexe à partir de parties réelles et imaginaires |
carg , cargf , cargl |
Calcul de l’argument (également appelé angle de phase) d’un nombre complexe |
cimag , cimagf , cimagl |
Calcul de la partie imaginaire d’un nombre complexe |
conj , conjf , conjl |
Calcul du conjugué complexe d'un nombre complexe |
cproj , cprojf , cprojl |
Calcul d’une projection d’un nombre complexe sur la sphère de Reimann |
creal , crealf , creall |
Calcul de la partie réelle d’un nombre complexe |
norm , normf , norml |
Calcul de la magnitude au carré d’un nombre complexe |
Fonctions d’opération
Étant donné que les nombres complexes ne sont pas un type natif dans le compilateur Microsoft, les opérateurs arithmétiques standard ne sont pas définis sur les types complexes. Pour des raisons pratiques, ces fonctions mathématiques complexes de la bibliothèque sont fournies pour limiter la manipulation de nombres complexes dans le code utilisateur :
Fonction | Description |
---|---|
_Cmulcc , _FCmulcc , _LCmulcc |
Multiplication de deux nombres complexes |
_Cmulcr , _FCmulcr , _LCmulcr |
Multiplication d’un nombre complexe et d’un nombre à virgule flottante |
Voir aussi
Mathématiques de type générique
Routines du runtime C universel par catégorie
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour