Kokkos Core Kernels Package  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | List of all members
Kokkos::complex< RealType > Class Template Reference

Partial reimplementation of std::complex that works as the result of a Kokkos::parallel_reduce. More...

#include <Kokkos_Complex.hpp>

Public Types

using value_type = RealType
 The type of the real or imaginary parts of this complex number. More...
 

Public Member Functions

KOKKOS_DEFAULTED_FUNCTION complex ()=default
 Default constructor (initializes both real and imaginary parts to zero). More...
 
KOKKOS_DEFAULTED_FUNCTION complex (const complex &) noexcept=default
 Copy constructor. More...
 
template<class RType , std::enable_if_t< std::is_convertible_v< RType, RealType >, int > = 0>
KOKKOS_INLINE_FUNCTION complex (const complex< RType > &other) noexcept
 Conversion constructor from compatible RType. More...
 
KOKKOS_INLINE_FUNCTION complex (const std::complex< RealType > &src) noexcept
 Conversion constructor from std::complex. More...
 
 operator std::complex< RealType > () const noexcept
 Conversion operator to std::complex. More...
 
KOKKOS_INLINE_FUNCTION complex (const RealType &val) noexcept
 Constructor that takes just the real part, and sets the imaginary part to zero. More...
 
KOKKOS_INLINE_FUNCTION complex (const RealType &re, const RealType &im) noexcept
 Constructor that takes the real and imaginary parts. More...
 
KOKKOS_INLINE_FUNCTION complexoperator= (const RealType &val) noexcept
 Assignment operator (from a real number). More...
 
complexoperator= (const std::complex< RealType > &src) noexcept
 Assignment operator from std::complex. More...
 
KOKKOS_INLINE_FUNCTION
constexpr RealType & 
imag () noexcept
 The imaginary part of this complex number. More...
 
KOKKOS_INLINE_FUNCTION
constexpr RealType & 
real () noexcept
 The real part of this complex number. More...
 
KOKKOS_INLINE_FUNCTION
constexpr RealType 
imag () const noexcept
 The imaginary part of this complex number. More...
 
KOKKOS_INLINE_FUNCTION
constexpr RealType 
real () const noexcept
 The real part of this complex number. More...
 
KOKKOS_INLINE_FUNCTION
constexpr void 
imag (RealType v) noexcept
 Set the imaginary part of this complex number. More...
 
KOKKOS_INLINE_FUNCTION
constexpr void 
real (RealType v) noexcept
 Set the real part of this complex number. More...
 

Detailed Description

template<class RealType>
class Kokkos::complex< RealType >

Partial reimplementation of std::complex that works as the result of a Kokkos::parallel_reduce.

Template Parameters
RealTypeThe type of the real and imaginary parts of the complex number. As with std::complex, this is only defined for float, double, and long double. The latter is currently forbidden in CUDA device kernels.

Definition at line 43 of file Kokkos_Complex.hpp.

Member Typedef Documentation

template<class RealType>
using Kokkos::complex< RealType >::value_type = RealType

The type of the real or imaginary parts of this complex number.

Definition at line 59 of file Kokkos_Complex.hpp.

Constructor & Destructor Documentation

template<class RealType>
KOKKOS_DEFAULTED_FUNCTION Kokkos::complex< RealType >::complex ( )
default

Default constructor (initializes both real and imaginary parts to zero).

template<class RealType>
KOKKOS_DEFAULTED_FUNCTION Kokkos::complex< RealType >::complex ( const complex< RealType > &  )
defaultnoexcept

Copy constructor.

template<class RealType>
template<class RType , std::enable_if_t< std::is_convertible_v< RType, RealType >, int > = 0>
KOKKOS_INLINE_FUNCTION Kokkos::complex< RealType >::complex ( const complex< RType > &  other)
inlinenoexcept

Conversion constructor from compatible RType.

Definition at line 75 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION Kokkos::complex< RealType >::complex ( const std::complex< RealType > &  src)
inlinenoexcept

Conversion constructor from std::complex.

This constructor cannot be called in a CUDA device function, because std::complex's methods and nonmember functions are not marked as CUDA device functions.

Definition at line 87 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION Kokkos::complex< RealType >::complex ( const RealType &  val)
inlinenoexcept

Constructor that takes just the real part, and sets the imaginary part to zero.

Definition at line 109 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION Kokkos::complex< RealType >::complex ( const RealType &  re,
const RealType &  im 
)
inlinenoexcept

Constructor that takes the real and imaginary parts.

Definition at line 114 of file Kokkos_Complex.hpp.

Member Function Documentation

template<class RealType>
Kokkos::complex< RealType >::operator std::complex< RealType > ( ) const
inlinenoexcept

Conversion operator to std::complex.

This operator cannot be called in a CUDA device function, because std::complex's methods and nonmember functions are not marked as CUDA device functions.

Definition at line 103 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION complex& Kokkos::complex< RealType >::operator= ( const RealType &  val)
inlinenoexcept

Assignment operator (from a real number).

Definition at line 117 of file Kokkos_Complex.hpp.

template<class RealType>
complex& Kokkos::complex< RealType >::operator= ( const std::complex< RealType > &  src)
inlinenoexcept

Assignment operator from std::complex.

This constructor cannot be called in a CUDA device function, because std::complex's methods and nonmember functions are not marked as CUDA device functions.

Definition at line 128 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION constexpr RealType& Kokkos::complex< RealType >::imag ( )
inlinenoexcept

The imaginary part of this complex number.

Definition at line 135 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION constexpr RealType& Kokkos::complex< RealType >::real ( )
inlinenoexcept

The real part of this complex number.

Definition at line 139 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION constexpr RealType Kokkos::complex< RealType >::imag ( ) const
inlinenoexcept

The imaginary part of this complex number.

Definition at line 143 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION constexpr RealType Kokkos::complex< RealType >::real ( ) const
inlinenoexcept

The real part of this complex number.

Definition at line 147 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION constexpr void Kokkos::complex< RealType >::imag ( RealType  v)
inlinenoexcept

Set the imaginary part of this complex number.

Definition at line 151 of file Kokkos_Complex.hpp.

template<class RealType>
KOKKOS_INLINE_FUNCTION constexpr void Kokkos::complex< RealType >::real ( RealType  v)
inlinenoexcept

Set the real part of this complex number.

Definition at line 155 of file Kokkos_Complex.hpp.


The documentation for this class was generated from the following file: