Complex number arithmetic
|
Si la macro constante
|
(desde C11) |
El lenguaje de programación C, a partir de C99, soporta matemáticas de números complejos con los tres tipos incorporados double _Complex , float _Complex , y long double _Complex (ver _Complex ). Cuando se incluye el encabezado <complex.h> , los tres tipos de números complejos también son accesibles como double complex , float complex , long double complex .
Además de los tipos complejos, pueden admitirse los tres tipos imaginarios: double _Imaginary , float _Imaginary , y long double _Imaginary (consulte _Imaginary ). Cuando se incluye el encabezado <complex.h> , los tres tipos imaginarios también son accesibles como double imaginary , float imaginary , y long double imaginary .
Los operadores aritméticos estándar + , - , * , / pueden utilizarse con tipos reales, complejos e imaginarios en cualquier combinación.
|
Se recomienda, pero no se requiere, que un compilador que define
|
(desde C99)
(hasta C11) |
|
Los números imaginarios son compatibles si
|
(desde C11) |
|
Definido en el encabezado
<complex.h>
|
||
Tipos |
||
|
(C99)
|
macro de tipo imaginario
(macro de palabra clave) |
|
|
(C99)
|
macro de tipo complex
(macro de palabra clave) |
|
La constante imaginaria |
||
|
(C99)
|
la constante de unidad imaginaria i
(macro constante) |
|
|
(C99)
|
la constante de unidad compleja i
(constante macro) |
|
|
(C99)
|
la constante de unidad compleja o imaginaria i
(macro constante) |
|
Manipulación |
||
|
(C11)
(C11)
(C11)
|
construye un número complejo a partir de partes real e imaginaria
(macro de función) |
|
|
(C99)
(C99)
(C99)
|
calcula la parte real de un número complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula la parte imaginaria de un número complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula la magnitud de un número complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el ángulo de fase de un número complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el conjugado complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula la proyección en la esfera de Riemann
(función) |
|
Funciones exponenciales |
||
|
(C99)
(C99)
(C99)
|
calcula la exponencial compleja base e
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el logaritmo natural complejo
(función) |
|
Funciones de potencia |
||
|
(C99)
(C99)
(C99)
|
calcula la función de potencia compleja
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula la raíz cuadrada compleja
(función) |
|
Funciones trigonométricas |
||
|
(C99)
(C99)
(C99)
|
calcula el seno complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el coseno complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula la tangente compleja
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el arco seno complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el arco coseno complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el arco tangente complejo
(función) |
|
Funciones hiperbólicas |
||
|
(C99)
(C99)
(C99)
|
calcula el seno hiperbólico complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el coseno hiperbólico complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula la tangente hiperbólica compleja
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el arco seno hiperbólico complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el arco coseno hiperbólico complejo
(función) |
|
|
(C99)
(C99)
(C99)
|
calcula el arco tangente hiperbólica compleja
(función) |
|
Notas
Los siguientes nombres de función están
potencialmente
(desde C23)
reservados para futuras adiciones a
<complex.h>
y no están disponibles para su uso en programas que incluyan este encabezado:
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
(desde C23)
, junto con sus variantes con sufijos -
f
y -
l
.
Aunque el estándar de C nombra las funciones hiperbólicas inversas como "seno hiperbólico arco complejo" etc., las funciones inversas de las funciones hiperbólicas son las funciones de área. Su argumento es el área de un sector hiperbólico, no un arco. Los nombres correctos son "seno hiperbólico inverso complejo" etc. Algunos autores utilizan "seno hiperbólico de área complejo" etc.
Un número complejo o imaginario es infinito si una de sus partes es infinita, incluso si la otra parte es NaN.
Un número complejo o imaginario es finito si ambas partes no son infinitos ni NaNs.
Un número complejo o imaginario es cero si ambas partes son ceros positivos o negativos.
Si bien MSVC proporciona un
<complex.h>
header, no implementa números complejos como tipos nativos, sino como
struct
s, que son incompatibles con los tipos complejos estándar de C y no admiten los operadores
+
,
-
,
*
,
/
.
Ejemplo
#include <complex.h> #include <stdio.h> #include <tgmath.h> int main(void) { double complex z1 = I * I; // unidad imaginaria al cuadrado printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = pow(I, 2); // unidad imaginaria al cuadrado printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI = acos(-1); double complex z3 = exp(I * PI); // fórmula de Euler printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); double complex z4 = 1 + 2 * I, z5 = 1 - 2 * I; // conjugados printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4 * z5), cimag(z4 * z5)); }
Salida:
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
Referencias
| Contenido extendido |
|---|
|
Véase también
|
Documentación de C++
para
Aritmética de números complejos
|