# Complex Numbers
[Numerics]

Collaboration diagram for Complex Numbers:

## Classes

- struct std::complex< _Tp >

## Functions

- std::complex< float >::complex (const complex< double > &)
- std::complex< float >::complex (const complex< long double > &)
- std::complex< double >::complex (const complex< long double > &)
- template<typename _Tp > _Tp std::__complex_abs (const complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::__complex_acos (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::__complex_acosh (const std::complex< _Tp > &__z)
- template<typename _Tp > _Tp std::__complex_arg (const complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::__complex_asin (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::__complex_asinh (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::__complex_atan (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::__complex_atanh (const std::complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_cos (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_cosh (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_exp (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_log (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_pow (const complex< _Tp > &__x, const complex< _Tp > &__y)
- template<typename _Tp > complex< _Tp > std::__complex_sin (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_sinh (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_sqrt (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_tan (const complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::__complex_tanh (const complex< _Tp > &__z)
- template<typename _Tp > _Tp std::abs (const complex< _Tp > &)
- template<typename _Tp > std::complex< _Tp > std::tr1::acos (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::acosh (const std::complex< _Tp > &__z)
- template<typename _Tp > _Tp std::arg (const complex< _Tp > &)
- template<typename _Tp > __gnu_cxx::__promote< _Tp >::__type std::tr1::arg (_Tp __x)
- template<typename _Tp > std::complex< _Tp > std::tr1::asin (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::asinh (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::atan (const std::complex< _Tp > &__z)
- template<typename _Tp > std::complex< _Tp > std::tr1::atanh (const std::complex< _Tp > &__z)
- template<typename _Tp > complex< _Tp > std::conj (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::cos (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::cosh (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::exp (const complex< _Tp > &)
- template<typename _Tp > _Tp std::tr1::fabs (const std::complex< _Tp > &__z)
- template<typename _Tp > _Tp std::imag (const complex< _Tp > &__z)
- template<typename _Tp > __gnu_cxx::__promote< _Tp >::__type std::tr1::imag (_Tp)
- template<typename _Tp > complex< _Tp > std::log (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::log10 (const complex< _Tp > &)
- template<typename _Tp > _Tp std::norm (const complex< _Tp > &)
- template<typename _Tp > __gnu_cxx::__promote< _Tp >::__type std::tr1::norm (_Tp __x)
- template<typename _Up > complex< _Tp > & std::complex::operator*= (const complex< _Up > &)
- complex< _Tp > & std::complex::operator*= (const _Tp &)
- template<typename _Tp > complex< _Tp > std::operator+ (const complex< _Tp > &__x)
- template<typename _Up > complex< _Tp > & std::complex::operator+= (const complex< _Up > &)
- template<typename _Tp > complex< _Tp > std::operator- (const complex< _Tp > &__x)
- template<typename _Up > complex< _Tp > & std::complex::operator-= (const complex< _Up > &)
- template<typename _Up > complex< _Tp > & std::complex::operator/= (const complex< _Up > &)
- complex< _Tp > & std::complex::operator/= (const _Tp &)
- template<typename _Tp , typename _CharT , class _Traits > basic_ostream< _CharT, _Traits > & std::operator<< (basic_ostream< _CharT, _Traits > &__os, const complex< _Tp > &__x)
- template<typename _Up > complex< _Tp > & std::complex::operator= (const complex< _Up > &)
- complex< _Tp > & std::complex::operator= (const _Tp &)
- template<typename _Tp , typename _CharT , class _Traits > basic_istream< _CharT, _Traits > & std::operator>> (basic_istream< _CharT, _Traits > &__is, complex< _Tp > &__x)
- template<typename _Tp > complex< _Tp > std::polar (const _Tp &, const _Tp &=0)
- template<typename _Tp , typename _Up > std::complex< typename
  __gnu_cxx::__promote_2< _Tp,
  _Up >::__type > std::tr1::pow (const _Tp &__x, const std::complex< _Up > &__y)
- template<typename _Tp > complex< _Tp > std::pow (const _Tp &, const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::pow (const complex< _Tp > &, const _Tp &)
- template<typename _Tp , typename _Up > std::complex< typename
  __gnu_cxx::__promote_2< _Tp,
  _Up >::__type > std::tr1::pow (const std::complex< _Tp > &__x, const _Up &__y)
- template<typename _Tp > complex< _Tp > std::pow (const complex< _Tp > &, const complex< _Tp > &)
- template<typename _Tp , typename _Up > std::complex< typename
  __gnu_cxx::__promote_2< _Tp,
  _Up >::__type > std::tr1::pow (const std::complex< _Tp > &__x, const std::complex< _Up > &__y)
- template<typename _Tp > _Tp std::real (const complex< _Tp > &__z)
- template<typename _Tp > __gnu_cxx::__promote< _Tp >::__type std::tr1::real (_Tp __x)
- template<typename _Tp > complex< _Tp > std::sin (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::sinh (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::sqrt (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::tan (const complex< _Tp > &)
- template<typename _Tp > complex< _Tp > std::tanh (const complex< _Tp > &)

- template<typename _Tp > complex< _Tp > std::operator+ (const complex< _Tp > &__x, const complex< _Tp > &__y)
- template<typename _Tp > complex< _Tp > std::operator+ (const complex< _Tp > &__x, const _Tp &__y)
- template<typename _Tp > complex< _Tp > std::operator+ (const _Tp &__x, const complex< _Tp > &__y)

- template<typename _Tp > complex< _Tp > std::operator- (const complex< _Tp > &__x, const complex< _Tp > &__y)
- template<typename _Tp > complex< _Tp > std::operator- (const complex< _Tp > &__x, const _Tp &__y)
- template<typename _Tp > complex< _Tp > std::operator- (const _Tp &__x, const complex< _Tp > &__y)

- template<typename _Tp > complex< _Tp > std::operator* (const complex< _Tp > &__x, const complex< _Tp > &__y)
- template<typename _Tp > complex< _Tp > std::operator* (const complex< _Tp > &__x, const _Tp &__y)
- template<typename _Tp > complex< _Tp > std::operator* (const _Tp &__x, const complex< _Tp > &__y)

- template<typename _Tp > complex< _Tp > std::operator/ (const complex< _Tp > &__x, const complex< _Tp > &__y)
- template<typename _Tp > complex< _Tp > std::operator/ (const complex< _Tp > &__x, const _Tp &__y)
- template<typename _Tp > complex< _Tp > std::operator/ (const _Tp &__x, const complex< _Tp > &__y)

- template<typename _Tp > bool std::operator== (const complex< _Tp > &__x, const complex< _Tp > &__y)
- template<typename _Tp > bool std::operator== (const complex< _Tp > &__x, const _Tp &__y)
- template<typename _Tp > bool std::operator== (const _Tp &__x, const complex< _Tp > &__y)

- template<typename _Tp > bool std::operator!= (const complex< _Tp > &__x, const complex< _Tp > &__y)
- template<typename _Tp > bool std::operator!= (const complex< _Tp > &__x, const _Tp &__y)
- template<typename _Tp > bool std::operator!= (const _Tp &__x, const complex< _Tp > &__y)

## Detailed Description

Classes and functions for complex numbers.

## Function Documentation

template<typename _Tp >

_Tp std::abs | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return magnitude of z.

Definition at line 594 of file complex.

Referenced by std::tr1::fabs(), std::binomial_distribution< _IntType >::operator()(), and std::poisson_distribution< _IntType >::operator()().

template<typename _Tp >

std::complex< _Tp > std::tr1::acos | ( | const std::complex< _Tp > & | __z | ) | `[inline]`

acos(__z) [8.1.2].

Definition at line 86 of file tr1_impl/complex.

template<typename _Tp >

std::complex< _Tp > std::tr1::acosh | ( | const std::complex< _Tp > & | __z | ) | `[inline]`

acosh(__z) [8.1.5].

Definition at line 205 of file tr1_impl/complex.

template<typename _Tp >

__gnu_cxx::__promote<_Tp>::__type std::tr1::arg | ( | _Tp | __x | ) | `[inline]`

Additional overloads [8.1.9].

Definition at line 311 of file tr1_impl/complex.

References std::arg().

template<typename _Tp >

_Tp std::arg | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return phase angle of z.

Definition at line 621 of file complex.

Referenced by std::tr1::arg().

template<typename _Tp >

std::complex< _Tp > std::tr1::asin | ( | const std::complex< _Tp > & | __z | ) | `[inline]`

asin(__z) [8.1.3].

Definition at line 122 of file tr1_impl/complex.

template<typename _Tp >

std::complex< _Tp > std::tr1::asinh | ( | const std::complex< _Tp > & | __z | ) | `[inline]`

asinh(__z) [8.1.6].

Definition at line 244 of file tr1_impl/complex.

template<typename _Tp >

std::complex< _Tp > std::tr1::atan | ( | const std::complex< _Tp > & | __z | ) | `[inline]`

atan(__z) [8.1.4].

Definition at line 166 of file tr1_impl/complex.

template<typename _Tp >

std::complex< _Tp > std::tr1::atanh | ( | const std::complex< _Tp > & | __z | ) | `[inline]`

atanh(__z) [8.1.7].

Definition at line 288 of file tr1_impl/complex.

template<typename _Tp >

complex< _Tp > std::conj | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex conjugate of z.

Definition at line 667 of file complex.

template<typename _Tp >

complex< _Tp > std::cos | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex cosine of z.

Definition at line 699 of file complex.

Referenced by std::polar().

template<typename _Tp >

complex< _Tp > std::cosh | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex hyperbolic cosine of z.

Definition at line 729 of file complex.

template<typename _Tp >

complex< _Tp > std::exp | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex base e exponential of z.

Definition at line 755 of file complex.

Referenced by std::pow().

template<typename _Tp >

_Tp std::tr1::fabs | ( | const std::complex< _Tp > & | __z | ) | `[inline]`

fabs(__z) [8.1.8].

Definition at line 301 of file tr1_impl/complex.

References std::abs().

template<typename _Tp >

complex< _Tp > std::log | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex natural logarithm of z.

Definition at line 782 of file complex.

Referenced by std::generate_canonical(), std::log10(), std::gamma_distribution< _RealType >::operator()(), std::normal_distribution< _RealType >::operator()(), std::binomial_distribution< _IntType >::operator()(), std::poisson_distribution< _IntType >::operator()(), std::independent_bits_engine< _RandomNumberEngine, __w, _UIntType >::operator()(), and std::pow().

template<typename _Tp >

complex< _Tp > std::log10 | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex base 10 logarithm of z.

Definition at line 787 of file complex.

References std::log().

template<typename _Tp >

_Tp std::norm | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return z magnitude squared.

Definition at line 654 of file complex.

Referenced by std::complex< _Tp >::operator/=().

template<typename _Tp >

bool std::operator!= | ( | const complex< _Tp > & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return false if x is equal to y.

Definition at line 469 of file complex.

template<typename _Tp >

bool std::operator!= | ( | const complex< _Tp > & | __x,
|  | const _Tp & | __y |
| ) |  |  | `[inline]`

Return false if x is equal to y.

Definition at line 474 of file complex.

template<typename _Tp >

bool std::operator!= | ( | const _Tp & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return false if x is equal to y.

Definition at line 479 of file complex.

template<typename _Tp >

complex<_Tp> std::operator* | ( | const complex< _Tp > & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x times y.

Definition at line 379 of file complex.

template<typename _Tp >

complex<_Tp> std::operator* | ( | const complex< _Tp > & | __x,
|  | const _Tp & | __y |
| ) |  |  | `[inline]`

Return new complex value x times y.

Definition at line 388 of file complex.

template<typename _Tp >

complex<_Tp> std::operator* | ( | const _Tp & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x times y.

Definition at line 397 of file complex.

template<typename _Tp >

complex< _Tp > & std::complex< _Tp >::operator*= | ( | const _Tp & | __t | ) | `[inherited]`

Multiply this complex number by t.

Definition at line 238 of file complex.

template<typename _Tp >
template<typename _Up >

complex< _Tp > & std::complex< _Tp >::operator*= | ( | const complex< _Up > & | __z | ) | `[inherited]`

Multiply this complex number by z.

Definition at line 292 of file complex.

template<typename _Tp >

complex<_Tp> std::operator+ | ( | const complex< _Tp > & | __x | ) | `[inline]`

Return x.

Definition at line 438 of file complex.

template<typename _Tp >

complex<_Tp> std::operator+ | ( | const _Tp & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x plus y.

Definition at line 337 of file complex.

template<typename _Tp >

complex<_Tp> std::operator+ | ( | const complex< _Tp > & | __x,
|  | const _Tp & | __y |
| ) |  |  | `[inline]`

Return new complex value x plus y.

Definition at line 328 of file complex.

template<typename _Tp >

complex<_Tp> std::operator+ | ( | const complex< _Tp > & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x plus y.

Definition at line 319 of file complex.

template<typename _Tp >
template<typename _Up >

complex< _Tp > & std::complex< _Tp >::operator+= | ( | const complex< _Up > & | __z | ) | `[inherited]`

Add z to this complex number.

Definition at line 269 of file complex.

template<typename _Tp >

complex<_Tp> std::operator- | ( | const complex< _Tp > & | __x | ) | `[inline]`

Return complex negation of x.

Definition at line 444 of file complex.

template<typename _Tp >

complex<_Tp> std::operator- | ( | const complex< _Tp > & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x minus y.

Definition at line 349 of file complex.

template<typename _Tp >

complex<_Tp> std::operator- | ( | const complex< _Tp > & | __x,
|  | const _Tp & | __y |
| ) |  |  | `[inline]`

Return new complex value x minus y.

Definition at line 358 of file complex.

template<typename _Tp >

complex<_Tp> std::operator- | ( | const _Tp & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x minus y.

Definition at line 367 of file complex.

template<typename _Tp >
template<typename _Up >

complex< _Tp > & std::complex< _Tp >::operator-= | ( | const complex< _Up > & | __z | ) | `[inherited]`

Subtract z from this complex number.

Definition at line 280 of file complex.

template<typename _Tp >

complex<_Tp> std::operator/ | ( | const complex< _Tp > & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x divided by y.

Definition at line 409 of file complex.

template<typename _Tp >

complex<_Tp> std::operator/ | ( | const complex< _Tp > & | __x,
|  | const _Tp & | __y |
| ) |  |  | `[inline]`

Return new complex value x divided by y.

Definition at line 418 of file complex.

template<typename _Tp >

complex<_Tp> std::operator/ | ( | const _Tp & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return new complex value x divided by y.

Definition at line 427 of file complex.

template<typename _Tp >

complex< _Tp > & std::complex< _Tp >::operator/= | ( | const _Tp & | __t | ) | `[inherited]`

Divide this complex number by t.

Definition at line 248 of file complex.

template<typename _Tp >
template<typename _Up >

complex< _Tp > & std::complex< _Tp >::operator/= | ( | const complex< _Up > & | __z | ) | `[inherited]`

Divide this complex number by z.

Definition at line 305 of file complex.

References std::norm().

template<typename _Tp , typename _CharT , class _Traits >

basic_ostream<_CharT, _Traits>& std::operator<< | ( | basic_ostream< _CharT, _Traits > & | __os,
|  | const complex< _Tp > & | __x |
| ) |  |  |

Insertion operator for complex values.

Definition at line 519 of file complex.

References std::ios_base::flags(), std::basic_ios< _CharT, _Traits >::imbue(), std::ios_base::precision(), and std::basic_ostringstream< _CharT, _Traits, _Alloc >::str().

template<typename _Tp >

complex< _Tp > & std::complex< _Tp >::operator= | ( | const _Tp & | __t | ) | `[inherited]`

Assign this complex number to scalar t.

Definition at line 228 of file complex.

template<typename _Tp >
template<typename _Up >

complex< _Tp > & std::complex< _Tp >::operator= | ( | const complex< _Up > & | __z | ) | `[inherited]`

Assign this complex number to complex z.

Definition at line 258 of file complex.

template<typename _Tp >

bool std::operator== | ( | const complex< _Tp > & | __x,
|  | const _Tp & | __y |
| ) |  |  | `[inline]`

Return true if x is equal to y.

Definition at line 456 of file complex.

template<typename _Tp >

bool std::operator== | ( | const complex< _Tp > & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return true if x is equal to y.

Definition at line 451 of file complex.

template<typename _Tp >

bool std::operator== | ( | const _Tp & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return true if x is equal to y.

Definition at line 461 of file complex.

template<typename _Tp , typename _CharT , class _Traits >

basic_istream<_CharT, _Traits>& std::operator>> | ( | basic_istream< _CharT, _Traits > & | __is,
|  | complex< _Tp > & | __x |
| ) |  |  |

Extraction operator for complex values.

Definition at line 486 of file complex.

References std::ios_base::failbit, std::basic_istream< _CharT, _Traits >::putback(), and std::basic_ios< _CharT, _Traits >::setstate().

template<typename _Tp >

complex< _Tp > std::polar | ( | const _Tp & | __rho,
|  | const _Tp & | __theta = `0` |
| ) |  |  | `[inline]`

Return complex with magnitude rho and angle theta.

Definition at line 662 of file complex.

References std::cos(), and std::sin().

Referenced by std::pow().

template<typename _Tp >

complex< _Tp > std::pow | ( | const _Tp & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return x to the y'th power.

Definition at line 1009 of file complex.

References std::log(), std::polar(), and std::pow().

template<typename _Tp >

complex< _Tp > std::pow | ( | const complex< _Tp > & | __x,
|  | const _Tp & | __y |
| ) |  |  |

Return x to the y'th power.

Definition at line 964 of file complex.

References std::exp(), std::log(), and std::polar().

Referenced by std::gamma_distribution< _RealType >::operator()(), and std::pow().

template<typename _Tp >

complex< _Tp > std::pow | ( | const complex< _Tp > & | __x,
|  | const complex< _Tp > & | __y |
| ) |  |  | `[inline]`

Return x to the y'th power.

Definition at line 1003 of file complex.

template<typename _Tp >

complex< _Tp > std::sin | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex sine of z.

Definition at line 817 of file complex.

Referenced by std::polar().

template<typename _Tp >

complex< _Tp > std::sinh | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex hyperbolic sine of z.

Definition at line 847 of file complex.

template<typename _Tp >

complex< _Tp > std::sqrt | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex square root of z.

Definition at line 891 of file complex.

Referenced by std::normal_distribution< _RealType >::operator()(), and std::student_t_distribution< _RealType >::operator()().

template<typename _Tp >

complex< _Tp > std::tan | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex tangent of z.

Definition at line 918 of file complex.

template<typename _Tp >

complex< _Tp > std::tanh | ( | const complex< _Tp > & | __z | ) | `[inline]`

Return complex hyperbolic tangent of z.

Definition at line 946 of file complex.