Namespaces
Variants

Standard library header <complex>

From cppreference.net
Standard library headers

Este encabezado es parte de la biblioteca numérica .

Contenidos

Clases

un tipo de número complejo
(plantilla de clase)

Funciones

Operaciones
aplica operadores unarios a números complejos
(plantilla de función)
realiza operaciones aritméticas con números complejos sobre dos valores complejos o un complejo y un escalar
(plantilla de función)
(eliminado en C++20)
compara dos números complejos o un complejo y un escalar
(plantilla de función)
serializa y deserializa un número complejo
(plantilla de función)
devuelve la parte real
(plantilla de función)
devuelve la parte imaginaria
(plantilla de función)
devuelve la magnitud de un número complejo
(plantilla de función)
devuelve el ángulo de fase
(plantilla de función)
devuelve la magnitud al cuadrado
(plantilla de función)
devuelve el conjugado complejo
(plantilla de función)
(C++11)
devuelve la proyección sobre la esfera de Riemann
(plantilla de función)
construye un número complejo a partir de magnitud y ángulo de fase
(plantilla de función)
Funciones exponenciales
exponencial compleja de base e
(plantilla de función)
logaritmo natural complejo con los cortes de rama a lo largo del eje real negativo
(plantilla de función)
logaritmo común complejo con los cortes de rama a lo largo del eje real negativo
(plantilla de función)
Funciones de potencia
potencia compleja, uno o ambos argumentos pueden ser un número complejo
(plantilla de función)
raíz cuadrada compleja en el rango del semiplano derecho
(plantilla de función)
Funciones trigonométricas
calcula el seno de un número complejo ( sin(z) )
(plantilla de función)
calcula el coseno de un número complejo ( cos(z) )
(plantilla de función)
calcula la tangente de un número complejo ( tan(z) )
(plantilla de función)
calcula el arco seno de un número complejo ( arcsin(z) )
(plantilla de función)
calcula el arco coseno de un número complejo ( arccos(z) )
(plantilla de función)
calcula el arcotangente de un número complejo ( arctan(z) )
(plantilla de función)
Funciones hiperbólicas
calcula el seno hiperbólico de un número complejo ( sinh(z) )
(plantilla de función)
calcula el coseno hiperbólico de un número complejo ( cosh(z) )
(plantilla de función)
calcula la tangente hiperbólica de un número complejo ( tanh(z) )
(plantilla de función)
calcula el seno hiperbólico del área de un número complejo ( arsinh(z) )
(plantilla de función)
calcula el coseno hiperbólico del área de un número complejo ( arcosh(z) )
(plantilla de función)
calcula la tangente hiperbólica del área de un número complejo ( artanh(z) )
(plantilla de función)
Literales
un std::complex literal que representa un número puramente imaginario
(función)

Sinopsis

namespace std {
    template<class T> class complex;
    template<> class complex<float>;
    template<> class complex<double>;
    template<> class complex<long double>;
    // operators:
    template<class T> constexpr complex<T> operator+(
        const complex<T>&, const complex<T>&);
    template<class T> constexpr complex<T> operator+(const complex<T>&, const T&);
    template<class T> constexpr complex<T> operator+(const T&, const complex<T>&);
    template<class T> constexpr complex<T> operator-(
        const complex<T>&, const complex<T>&);
    template<class T> constexpr complex<T> operator-(const complex<T>&, const T&);
    template<class T> constexpr complex<T> operator-(const T&, const complex<T>&);
    template<class T> constexpr complex<T> operator*(
        const complex<T>&, const complex<T>&);
    template<class T> constexpr complex<T> operator*(const complex<T>&, const T&);
    template<class T> constexpr complex<T> operator*(const T&, const complex<T>&);
    template<class T> constexpr complex<T> operator/(
        const complex<T>&, const complex<T>&);
    template<class T> constexpr complex<T> operator/(const complex<T>&, const T&);
    template<class T> constexpr complex<T> operator/(const T&, const complex<T>&);
    template<class T> constexpr complex<T> operator+(const complex<T>&);
    template<class T> constexpr complex<T> operator-(const complex<T>&);
    template<class T> constexpr bool operator==(const complex<T>&, const complex<T>&);
    template<class T> constexpr bool operator==(const complex<T>&, const T&);
    template<class T> constexpr bool operator==(const T&, const complex<T>&);
    template<class T> constexpr bool operator!=(const complex<T>&, const complex<T>&);
    template<class T> constexpr bool operator!=(const complex<T>&, const T&);
    template<class T> constexpr bool operator!=(const T&, const complex<T>&);
    template<class T, class CharT, class Traits>
    basic_istream<CharT, Traits>&
    operator>>(basic_istream<CharT, Traits>&, complex<T>&);
    template<class T, class CharT, class Traits>
    basic_ostream<CharT, Traits>&
    operator<<(basic_ostream<CharT, Traits>&, const complex<T>&);
    // valores:
    template<class T> constexpr T real(const complex<T>&);
    template<class T> constexpr T imag(const complex<T>&);
    template<class T> T abs(const complex<T>&);
    template<class T> T arg(const complex<T>&);
    template<class T> constexpr T norm(const complex<T>&);
    template<class T> constexpr complex<T> conj(const complex<T>&);
    template<class T> complex<T> proj(const complex<T>&);
    template<class T> complex<T> polar(const T&, const T& = 0);
    // trascendentales:
    template<class T> complex<T> acos(const complex<T>&);
    template<class T> complex<T> asin(const complex<T>&);
    template<class T> complex<T> atan(const complex<T>&);
    template<class T> complex<T> acosh(const complex<T>&);
    template<class T> complex<T> asinh(const complex<T>&);
    template<class T> complex<T> atanh(const complex<T>&);
    template<class T> complex<T> cos  (const complex<T>&);
    template<class T> complex<T> cosh (const complex<T>&);
    template<class T> complex<T> exp  (const complex<T>&);
    template<class T> complex<T> log  (const complex<T>&);
    template<class T> complex<T> log10(const complex<T>&);
    template<class T> complex<T> pow(const complex<T>&, const T&);
    template<class T> complex<T> pow(const complex<T>&, const complex<T>&);
    template<class T> complex<T> pow(const T&, const complex<T>&);
    template<class T> complex<T> sin (const complex<T>&);
    template<class T> complex<T> sinh(const complex<T>&);
    template<class T> complex<T> sqrt(const complex<T>&);
    template<class T> complex<T> tan (const complex<T>&);
    template<class T> complex<T> tanh(const complex<T>&);
    // interfaz de tupla:
    template<class T> struct tuple_size;
    template<size_t I, class T> struct tuple_element;
    template<class T> struct tuple_size<complex<T>>;
    template<size_t I, class T> struct tuple_element<I, complex<T>>;
    template<size_t I, class T>
      constexpr T& get(complex<T>&) noexcept;
    template<size_t I, class T>
      constexpr T&& get(complex<T>&&) noexcept;
    template<size_t I, class T>
      constexpr const T& get(const complex<T>&) noexcept;
    template<size_t I, class T>
      constexpr const T&& get(const complex<T>&&) noexcept;
    // literales complejos:
    inline namespace literals {
        inline namespace complex_literals {
            constexpr complex<long double> operator""il(long double);
            constexpr complex<long double> operator""il(unsigned long long);
            constexpr complex<double> operator""i(long double);
            constexpr complex<double> operator""i(unsigned long long);
            constexpr complex<float> operator""if(long double);
            constexpr complex<float> operator""if(unsigned long long);
        }
    }
}

Clase std::complex

template<class T>
class complex {
public:
    typedef T value_type;
    constexpr complex(const T& re = T(), const T& im = T());
    constexpr complex(const complex&) = default;
    template<class X> constexpr explicit(/* ver página de constructor */)
        complex(const complex<X>&);
    constexpr T real() const;
    constexpr void real(T);
    constexpr T imag() const;
    constexpr void imag(T);
    constexpr complex<T>& operator= (const T&);
    constexpr complex<T>& operator+=(const T&);
    constexpr complex<T>& operator-=(const T&);
    constexpr complex<T>& operator*=(const T&);
    constexpr complex<T>& operator/=(const T&);
    constexpr complex& operator=(const complex&);
    template<class X> constexpr complex<T>& operator= (const complex<X>&);
    template<class X> constexpr complex<T>& operator+=(const complex<X>&);
    template<class X> constexpr complex<T>& operator-=(const complex<X>&);
    template<class X> constexpr complex<T>& operator*=(const complex<X>&);
    template<class X> constexpr complex<T>& operator/=(const complex<X>&);
};

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 79 C++98 el argumento por defecto del segundo parámetro
de polar faltaba en la sinopsis
añadido