std::complex
|   Defined in header <complex>
   | 
||
|   template< class T > class complex; //not defined  | 
(1) | |
|   template<> class complex<float>;  | 
(2) | |
|   template<> class complex<double>;  | 
(3) | |
|   template<> class complex<long double>;  | 
(4) | |
The specializations std::complex<float>, std::complex<double>, and std::complex<long double> are literal types for representing and manipulating complex numbers.
The effect of instantiating the template complex for any other type is unspecified.
Contents | 
[edit] Member types
| Member type | Definition | 
  value_type
 | 
  T
 | 
[edit] Member functions
|   constructs a complex number  (public member function)  | |
|    assigns the contents   (public member function)  | |
|    accesses the real part of the complex number  (public member function)  | |
|    accesses the imaginary part of the complex number  (public member function)  | |
|    compound assignment of two complex numbers or a complex and a scalar  (public member function)  | |
[edit] Non-member functions
|    applies unary operators to complex numbers   (function template)  | |
|    performs complex number arithmetics on two complex values or a complex and a scalar  (function template)  | |
|    compares two complex numbers or a complex and a scalar   (function template)  | |
|    serializes and deserializes a complex number   (function template)  | |
|    returns the real component   (function template)  | |
|    returns the imaginary component   (function template)  | |
|    returns the magnitude of a complex number   (function template)  | |
|    returns the phase angle   (function template)  | |
|    returns the squared magnitude   (function template)  | |
|    returns the complex conjugate   (function template)  | |
|    (C++11)  | 
   returns the projection onto the Riemann sphere   (function template)  | 
|    constructs a complex number from magnitude and phase angle   (function template)  | |
 Exponential functions | |
|    complex base e exponential   (function template)  | |
|    complex natural logarithm with the branch cuts along the negative real axis  (function template)  | |
|    complex common logarithm with the branch cuts along the negative real axis  (function template)  | |
 Power functions | |
|    complex power, one or both arguments may be a complex number   (function template)  | |
|    complex square root in the range of the right half-plane   (function template)  | |
 Trigonometric functions | |
|    computes sine of a complex number (sin(z))   (function template)  | |
|    computes cosine of a complex number (cos(z))   (function template)  | |
|    computes tangent of a complex number (tan(z))    (function template)  | |
|    (C++11)  | 
   computes arc sine of a complex number (arcsin(z))  (function template)  | 
|    (C++11)  | 
   computes arc cosine of a complex number (arccos(z))   (function template)  | 
|    (C++11)  | 
   computes arc tangent of a complex number (arctan(z))  (function template)  | 
 Hyperbolic functions | |
|    computes hyperbolic sine of a complex number (sh(z))   (function template)  | |
|    computes hyperbolic cosine of a complex number (ch(z))    (function template)  | |
|    computes hyperbolic tangent of a complex number   (function template)  | |
|    (C++11)  | 
   computes hyperbolic arc sine of a complex number   (function template)  | 
|    (C++11)  | 
   computes hyperbolic arc cosine of a complex number   (function template)  | 
|    (C++11)  | 
   computes hyperbolic arc tangent of a complex number   (function template)  | 
[edit] Non-static data members
For any complex number z, reinterpret_cast<T(&)[2]>(z)[0] is the real part of z and reinterpret_cast<T(&)[2]>(z)[1] is the imaginary part of z.
For any pointer to an element of an array of complex numbers p and any valid array index i, reinterpret_cast<T*>(p)[2*i] is the real part of the complex number p[i], and reinterpret_cast<T*>(p)[2*i + 1] is the imaginary part of the complex number p[i]
These requirements essentially limit implementation of each of the three specializations of std::complex to declaring two and only two non-static data members, of type value_type, with the same member access, which hold the real and the imaginary components, respectively.