Complex number arithmetic
|
Si la macro constante
|
(depuis C11) |
Le langage de programmation C, à partir de C99, prend en charge les calculs sur les nombres complexes avec les trois types intégrés double _Complex , float _Complex , et long double _Complex (voir _Complex ). Lorsque l'en-tête <complex.h> est inclus, les trois types de nombres complexes sont également accessibles sous les noms double complex , float complex , long double complex .
En plus des types complexes, les trois types imaginaires peuvent être pris en charge : double _Imaginary , float _Imaginary , et long double _Imaginary (voir _Imaginary ). Lorsque l'en-tête <complex.h> est inclus, les trois types imaginaires sont également accessibles sous les noms double imaginary , float imaginary , et long double imaginary .
Opérateurs arithmétiques standards + , - , * , / peuvent être utilisés avec les types réels, complexes et imaginaires dans n'importe quelle combinaison.
|
Un compilateur qui définit
|
(depuis C99)
(jusqu'à C11) |
|
Les nombres imaginaires sont pris en charge si
|
(depuis C11) |
|
Défini dans l'en-tête
<complex.h>
|
||
Types |
||
|
(C99)
|
macro de type imaginaire
(macro mot-clé) |
|
|
(C99)
|
macro de type complex
(macro mot-clé) |
|
La constante imaginaire |
||
|
(C99)
|
la constante d'unité imaginaire i
(constante macro) |
|
|
(C99)
|
la constante d'unité complexe i
(macro constante) |
|
|
(C99)
|
la constante d'unité complexe ou imaginaire i
(macro constante) |
|
Manipulation |
||
|
(C11)
(C11)
(C11)
|
construit un nombre complexe à partir de parties réelle et imaginaire
(macro fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule la partie réelle d'un nombre complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule la partie imaginaire d'un nombre complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule le module d'un nombre complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule l'angle de phase d'un nombre complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule le conjugué complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule la projection sur la sphère de Riemann
(fonction) |
|
Fonctions exponentielles |
||
|
(C99)
(C99)
(C99)
|
calcule l'exponentielle complexe en base e
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule le logarithme naturel complexe
(fonction) |
|
Fonctions de puissance |
||
|
(C99)
(C99)
(C99)
|
calcule la fonction puissance complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule la racine carrée complexe
(fonction) |
|
Fonctions trigonométriques |
||
|
(C99)
(C99)
(C99)
|
calcule le sinus complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule le cosinus complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule la tangente complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule l'arc sinus complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule l'arc cosinus complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule l'arc tangente complexe
(fonction) |
|
Fonctions hyperboliques |
||
|
(C99)
(C99)
(C99)
|
calcule le sinus hyperbolique complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule le cosinus hyperbolique complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule la tangente hyperbolique complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule l'arc sinus hyperbolique complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule l'arc cosinus hyperbolique complexe
(fonction) |
|
|
(C99)
(C99)
(C99)
|
calcule l'arc tangente hyperbolique complexe
(fonction) |
|
Notes
Les noms de fonctions suivants sont
potentiellement
(depuis C23)
réservés pour une future addition à
<complex.h>
et ne sont pas disponibles pour une utilisation dans les programmes qui incluent cet en-tête :
cerf
,
cerfc
,
cexp2
,
cexpm1
,
clog10
,
clog1p
,
clog2
,
clgamma
,
ctgamma
,
csinpi
,
ccospi
,
ctanpi
,
casinpi
,
cacospi
,
catanpi
,
ccompoundn
,
cpown
,
cpowr
,
crootn
,
crsqrt
,
cexp10m1
,
cexp10
,
cexp2m1
,
clog10p1
,
clog2p1
,
clogp1
(depuis C23)
, ainsi que leurs variantes suffixées par -
f
et -
l
.
Bien que la norme C nomme les fonctions hyperboliques inverses avec « sinus hyperbolique complexe arc » etc., les fonctions inverses des fonctions hyperboliques sont les fonctions d'aire. Leur argument est l'aire d'un secteur hyperbolique, pas un arc. Les noms corrects sont « sinus hyperbolique complexe inverse » etc. Certains auteurs utilisent « sinus hyperbolique complexe d'aire » etc.
Un nombre complexe ou imaginaire est infini si l'une de ses parties est infinie, même si l'autre partie est NaN.
Un nombre complexe ou imaginaire est fini si ses deux parties ne sont ni des infinis ni des NaNs.
Un nombre complexe ou imaginaire est nul si les deux parties sont des zéros positifs ou négatifs.
Bien que MSVC fournisse un en-tête
<complex.h>
, il n'implémente pas les nombres complexes comme des types natifs, mais comme des
struct
, qui sont incompatibles avec les types complexes standard du C et ne prennent pas en charge les opérateurs
+
,
-
,
*
,
/
.
Exemple
#include <complex.h> #include <stdio.h> #include <tgmath.h> int main(void) { double complex z1 = I * I; // unité imaginaire au carré printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = pow(I, 2); // unité imaginaire au carré printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI = acos(-1); double complex z3 = exp(I * PI); // formule d'Euler printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); double complex z4 = 1 + 2 * I, z5 = 1 - 2 * I; // conjugués printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4 * z5), cimag(z4 * z5)); }
Sortie :
I * I = -1.0+0.0i pow(I, 2) = -1.0+0.0i exp(I*PI) = -1.0+0.0i (1+2i)*(1-2i) = 5.0+0.0i
Références
| Contenu étendu |
|---|
|
Voir aussi
|
Documentation C++
pour
Arithmétique des nombres complexes
|