thrust::complex#
-
template<typename T>
struct complex# complexis the Thrust equivalent tostd::complex. It is functionally identical to it, but can also be used in device code whichstd::complexcurrently cannot.- Template Parameters:
T – The type used to hold the real and imaginary parts. Should be
floatordouble. Others types are not supported.
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
complexwith a type that is convertible to thiscomplex'svalue_type.- Parameters:
z – The
complexto copy from.
-
template<typename U>
complex(const complex<U> &z)# This converting copy constructor copies from a
complexwith a type that is convertible to thiscomplex'svalue_type.- Parameters:
z – The
complexto copy from.- Template Parameters:
U – is convertible to
value_type.
-
complex(const ::std::complex<T> &z)#
This converting copy constructor copies from a
std::complexwith a type that is convertible to thiscomplex'svalue_type.- Parameters:
z – The
complexto copy from.
-
template<typename U>
complex(const ::std::complex<U> &z)# This converting copy constructor copies from a
std::complexwith a type that is convertible to thiscomplex'svalue_type.- Parameters:
z – The
complexto copy from.- Template Parameters:
U – is convertible to
value_type.
-
complex &operator=(const T &re)#
Assign
reto the real part of thiscomplexand set the imaginary part to 0.- Parameters:
re – The real part of the number.
-
complex &operator=(const complex<T> &z) = default#
Assign
z.real()andz.imag()to the real and imaginary parts of thiscomplexrespectively.- Parameters:
z – The
complexto copy from.
-
template<typename U>
complex &operator=(const complex<U> &z)# Assign
z.real()andz.imag()to the real and imaginary parts of thiscomplexrespectively.- Parameters:
z – The
complexto copy from.- Template Parameters:
U – is convertible to
value_type.
-
complex &operator=(const ::std::complex<T> &z)#
Assign
z.real()andz.imag()to the real and imaginary parts of thiscomplexrespectively.- Parameters:
z – The
complexto copy from.
-
template<typename U>
complex &operator=( - const ::std::complex<U> &z,
Assign
z.real()andz.imag()to the real and imaginary parts of thiscomplexrespectively.- Parameters:
z – The
complexto copy from.- Template Parameters:
U – is convertible to
value_type.
-
template<typename U>
complex<T> &operator+=(const complex<U> &z)# Adds a
complexto thiscomplexand assigns the result to thiscomplex.- Parameters:
z – The
complexto be added.- Template Parameters:
U – is convertible to
value_type.
-
template<typename U>
complex<T> &operator-=(const complex<U> &z)# Subtracts a
complexfrom thiscomplexand assigns the result to thiscomplex.- Parameters:
z – The
complexto be subtracted.- Template Parameters:
U – is convertible to
value_type.
-
template<typename U>
complex<T> &operator*=(const complex<U> &z)# Multiplies this
complexby anothercomplexand assigns the result to thiscomplex.- Parameters:
z – The
complexto be multiplied.- Template Parameters:
U – is convertible to
value_type.
-
template<typename U>
complex<T> &operator/=(const complex<U> &z)# Divides this
complexby anothercomplexand assigns the result to thiscomplex.- Parameters:
z – The
complexto be divided.- Template Parameters:
U – is convertible to
value_type.
-
template<typename U>
complex<T> &operator+=(const U &z)# Adds a scalar to this
complexand assigns the result to thiscomplex.- Parameters:
z – The
complexto be added.- Template Parameters:
U – is convertible to
value_type.
-
template<typename U>
complex<T> &operator-=(const U &z)# Subtracts a scalar from this
complexand assigns the result to thiscomplex.- 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
complexby a scalar and assigns the result to thiscomplex.- 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
complexby a scalar and assigns the result to thiscomplex.- Parameters:
z – The scalar to be divided.
- Template Parameters:
U – is convertible to
value_type.
-
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() const#
Casts this
complexto astd::complexof the same type.