thrust::complex

Defined in thrust/complex.h

template<typename T>
struct complex

complex is the Thrust equivalent to std::complex. It is functionally identical to it, but can also be used in device code which std::complex currently cannot.

Template Parameters

T – The type used to hold the real and imaginary parts. Should be float or double. Others types are not supported.

Public Types

using value_type = T

value_type is the type of complex's real and imaginary parts.

Public Functions

complex(const T &re)

Construct a complex number with an imaginary part of 0.

Parameters

re – The real part of the number.

complex(const T &re, const T &im)

Construct a complex number from its real and imaginary parts.

Parameters
  • re – The real part of the number.

  • im – The imaginary part of the number.

complex() = default

Default construct a complex number.

complex(const complex<T> &z) = default

This copy constructor copies from a complex with a type that is convertible to this complex's value_type.

Parameters

z – The complex to copy from.

template<typename U>
complex(const complex<U> &z)

This converting copy constructor copies from a complex with a type that is convertible to this complex's value_type.

Parameters

z – The complex to copy from.

Template Parameters

U – is convertible to value_type.

complex(const std::complex<T> &z)

This converting copy constructor copies from a std::complex with a type that is convertible to this complex's value_type.

Parameters

z – The complex to copy from.

template<typename U>
complex(const std::complex<U> &z)

This converting copy constructor copies from a std::complex with a type that is convertible to this complex's value_type.

Parameters

z – The complex to copy from.

Template Parameters

U – is convertible to value_type.

complex &operator=(const T &re)

Assign re to the real part of this complex and set the imaginary part to 0.

Parameters

re – The real part of the number.

complex &operator=(const complex<T> &z) = default

Assign z.real() and z.imag() to the real and imaginary parts of this complex respectively.

Parameters

z – The complex to copy from.

template<typename U>
complex &operator=(const complex<U> &z)

Assign z.real() and z.imag() to the real and imaginary parts of this complex respectively.

Parameters

z – The complex to copy from.

Template Parameters

U – is convertible to value_type.

complex &operator=(const std::complex<T> &z)

Assign z.real() and z.imag() to the real and imaginary parts of this complex respectively.

Parameters

z – The complex to copy from.

template<typename U>
complex &operator=(const std::complex<U> &z)

Assign z.real() and z.imag() to the real and imaginary parts of this complex respectively.

Parameters

z – The complex to copy from.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator+=(const complex<U> &z)

Adds a complex to this complex and assigns the result to this complex.

Parameters

z – The complex to be added.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator-=(const complex<U> &z)

Subtracts a complex from this complex and assigns the result to this complex.

Parameters

z – The complex to be subtracted.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator*=(const complex<U> &z)

Multiplies this complex by another complex and assigns the result to this complex.

Parameters

z – The complex to be multiplied.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator/=(const complex<U> &z)

Divides this complex by another complex and assigns the result to this complex.

Parameters

z – The complex to be divided.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator+=(const U &z)

Adds a scalar to this complex and assigns the result to this complex.

Parameters

z – The complex to be added.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator-=(const U &z)

Subtracts a scalar from this complex and assigns the result to this complex.

Parameters

z – The scalar to be subtracted.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator*=(const U &z)

Multiplies this complex by a scalar and assigns the result to this complex.

Parameters

z – The scalar to be multiplied.

Template Parameters

U – is convertible to value_type.

template<typename U>
complex<T> &operator/=(const U &z)

Divides this complex by a scalar and assigns the result to this complex.

Parameters

z – The scalar to be divided.

Template Parameters

U – is convertible to value_type.

inline T real() volatile const

Returns the real part of this complex.

inline T imag() volatile const

Returns the imaginary part of this complex.

inline T real() const

Returns the real part of this complex.

inline T imag() const

Returns the imaginary part of this complex.

inline void real(T re) volatile

Sets the real part of this complex.

Parameters

re – The new real part of this complex.

inline void imag(T im) volatile

Sets the imaginary part of this complex.

Parameters

im – The new imaginary part of this complex.e

inline void real(T re)

Sets the real part of this complex.

Parameters

re – The new real part of this complex.

inline void imag(T im)

Sets the imaginary part of this complex.

Parameters

im – The new imaginary part of this complex.

inline operator std::complex<T>() const

Casts this complex to a std::complex of the same type.