<complex>

<complex>

abs · arg · complex · complex<double> · complex<float> · complex<long double> · conjg · cos · cosh · exp · imag · log · log10 · norm · operator!= · operator* · operator+ · operator- · operator/ · operator<< · operator== · operator>> · polar · pow · real · sin · sinh · sqrt · __STD_COMPLEX

namespace std {
#define __STD_COMPLEX
//    TEMPLATE CLASSES
template<class T>
    class complex;
class complex<float>;
class complex<double>;
class complex<long double>;
//    TEMPLATE FUNCTIONS
template<class T>
    complex<T> operator+(const complex<T>& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator+(const complex<T>& lhs, const T& rhs);
template<class T>
    complex<T> operator+(const T& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator-(const complex<T>& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator-(const complex<T>& lhs, const T& rhs);
template<class T>
    complex<T> operator-(const T& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator*(const complex<T>& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator*(const complex<T>& lhs, const T& rhs);
template<class T>
    complex<T> operator*(const T& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator/(const complex<T>& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator/(const complex<T>& lhs, const T& rhs);
template<class T>
    complex<T> operator/(const T& lhs, const complex<T>& rhs);
template<class T>
    complex<T> operator+(const complex<T>& lhs);
template<class T>
    complex<T> operator-(const complex<T>& lhs);
template<class T>
    bool operator==(const complex<T>& lhs, const complex<T>& rhs);
template<class T>
    bool operator==(const complex<T>& lhs, const T& rhs);
template<class T>
    bool operator==(const T& lhs, const complex<T>& rhs);
template<class T>
    bool operator!=(const complex<T>& lhs, const complex<T>& rhs);
template<class T>
    bool operator!=(const complex<T>& lhs, const T& rhs);
template<class T>
    bool operator!=(const T& lhs, const complex<T>& rhs);
template<class E, class Ti, class T>
    basic_istream<E, Ti>& operator>>(basic_istream<E, Ti>& is,
        complex<T>& x);
template<class E, class T, class U>
    basic_ostream<E, T>& operator<<(basic_ostream<E, T>& os,
        const complex<U>& x);
template<class T>
    T real(const complex<T>& x);
template<class T>
    T imag(const complex<T>& x);
template<class T>
    T abs(const complex<T>& x);
template<class T>
    T arg(const complex<T>& x);
template<class T>
    T norm(const complex<T>& x);
template<class T>
    complex<T> conjg(const complex<T>& x);
template<class T>
    complex<T> polar(const T& rho, const T& theta = 0);
template<class T>
    complex<T> cos(const complex<T>& x);
template<class T>
    complex<T> cosh(const complex<T>& x);
template<class T>
    complex<T> exp(const complex<T>& x);
template<class T>
    complex<T> log(const complex<T>& x);
template<class T>
    complex<T> log10(const complex<T>& x);
template<class T>
    complex<T> pow(const complex<T>& x, int y);
template<class T>
    complex<T> pow(const complex<T>& x, const T& y);
template<class T>
    complex<T> pow(const complex<T>& x, const complex<T>& y);
template<class T>
    complex<T> pow(const T& x, const complex<T>& y);
template<class T>
    complex<T> sin(const complex<T>& x);
template<class T>
    complex<T> sinh(const complex<T>& x);
template<class T>
    complex<T> sqrt(const complex<T>& x);
    };

Include the standard header <complex> to define template class complex and a host of supporting template functions. Unless otherwise specified, functions that can return multiple values return an imaginary part in the half-open interval (-pi, pi].