thrust::complex#
-
template<typename T>
struct complex# complex
is the Thrust equivalent tostd::complex
. It is functionally identical to it, but can also be used in device code whichstd::complex
currently cannot.- Template Parameters:
T – The type used to hold the real and imaginary parts. Should be
float
ordouble
. 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
complex
with a type that is convertible to thiscomplex'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 thiscomplex'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 thiscomplex'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 thiscomplex'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 thiscomplex
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()
andz.imag()
to the real and imaginary parts of thiscomplex
respectively.- Parameters:
z – The
complex
to copy from.
-
template<typename U>
complex &operator=(const complex<U> &z)# Assign
z.real()
andz.imag()
to the real and imaginary parts of thiscomplex
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()
andz.imag()
to the real and imaginary parts of thiscomplex
respectively.- Parameters:
z – The
complex
to copy from.
-
template<typename U>
complex &operator=( - const ::std::complex<U> &z,
Assign
z.real()
andz.imag()
to the real and imaginary parts of thiscomplex
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 thiscomplex
and assigns the result to thiscomplex
.- 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 thiscomplex
and assigns the result to thiscomplex
.- 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 anothercomplex
and assigns the result to thiscomplex
.- 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 anothercomplex
and assigns the result to thiscomplex
.- 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 thiscomplex
.- 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 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
complex
by 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
complex
by 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
complex
to astd::complex
of the same type.