Template Struct complex

Struct Documentation

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

typedef T value_type

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

Public Functions

__host__ __device__ thrust::complex::complex(const T & re)

Construct a complex number with an imaginary part of 0.

Parameters
  • re: The real part of the number.

__host__ __device__ thrust::complex::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.

__host__ __device__ thrust::complex::complex()

Default construct a complex number.

__host__ __device__ thrust::complex::complex(const complex < T > & z)

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>__host__ __device__ thrust::complex::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.

__host__ THRUST_STD_COMPLEX_DEVICE thrust::complex::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>__host__ THRUST_STD_COMPLEX_DEVICE thrust::complex::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.

__host__ __device__ complex& thrust::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.

__host__ __device__ complex& thrust::complex::operator=(const 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>__host__ __device__ complex& thrust::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.

__host__ THRUST_STD_COMPLEX_DEVICE complex& thrust::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>__host__ THRUST_STD_COMPLEX_DEVICE complex& thrust::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>__host__ __device__ complex<T>& thrust::complex::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>__host__ __device__ complex<T>& thrust::complex::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>__host__ __device__ complex<T>& thrust::complex::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>__host__ __device__ complex<T>& thrust::complex::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>__host__ __device__ complex<T>& thrust::complex::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>__host__ __device__ complex<T>& thrust::complex::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>__host__ __device__ complex<T>& thrust::complex::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>__host__ __device__ complex<T>& thrust::complex::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.

__host__ __device__ T thrust::complex::real() const volatile

Returns the real part of this complex.

__host__ __device__ T thrust::complex::imag() const volatile

Returns the imaginary part of this complex.

__host__ __device__ T thrust::complex::real() const

Returns the real part of this complex.

__host__ __device__ T thrust::complex::imag() const

Returns the imaginary part of this complex.

__host__ __device__ void thrust::complex::real(T re) volatile

Sets the real part of this complex.

Parameters
  • re: The new real part of this complex.

__host__ __device__ void thrust::complex::imag(T im) volatile

Sets the imaginary part of this complex.

Parameters
  • im: The new imaginary part of this complex.e

__host__ __device__ void thrust::complex::real(T re)

Sets the real part of this complex.

Parameters
  • re: The new real part of this complex.

__host__ __device__ void thrust::complex::imag(T im)

Sets the imaginary part of this complex.

Parameters
  • im: The new imaginary part of this complex.

__host__ __device__ thrust::complex::operator std::complex< T >() const

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