alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
alpaka::internal Namespace Reference

Classes

class  Complex
 Implementation of a complex number useable on host and device. More...
 
struct  ViewAccessOps
 

Functions

template<typename T , typename TChar , typename TTraits >
std::basic_ostream< TChar, TTraits > & operator<< (std::basic_ostream< TChar, TTraits > &os, Complex< T > const &x)
 Host-only output of a complex number.
 
template<typename T , typename TChar , typename TTraits >
std::basic_istream< TChar, TTraits > & operator>> (std::basic_istream< TChar, TTraits > &is, Complex< T > const &x)
 Host-only input of a complex number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator+ (Complex< T > const &val)
 Host-device arithmetic operations matching std::complex<T>.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator- (Complex< T > const &val)
 Unary minus.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator+ (Complex< T > const &lhs, Complex< T > const &rhs)
 Addition of two complex numbers.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator+ (Complex< T > const &lhs, T const &rhs)
 Addition of a complex and a real number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator+ (T const &lhs, Complex< T > const &rhs)
 Addition of a real and a complex number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator- (Complex< T > const &lhs, Complex< T > const &rhs)
 Subtraction of two complex numbers.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator- (Complex< T > const &lhs, T const &rhs)
 Subtraction of a complex and a real number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator- (T const &lhs, Complex< T > const &rhs)
 Subtraction of a real and a complex number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator* (Complex< T > const &lhs, Complex< T > const &rhs)
 Muptiplication of two complex numbers.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator* (Complex< T > const &lhs, T const &rhs)
 Muptiplication of a complex and a real number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator* (T const &lhs, Complex< T > const &rhs)
 Muptiplication of a real and a complex number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator/ (Complex< T > const &lhs, Complex< T > const &rhs)
 Division of two complex numbers.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator/ (Complex< T > const &lhs, T const &rhs)
 Division of complex and a real number.
 
template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > operator/ (T const &lhs, Complex< T > const &rhs)
 Division of a real and a complex number.
 
template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool operator== (Complex< T > const &lhs, Complex< T > const &rhs)
 Equality of two complex numbers.
 
template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool operator== (Complex< T > const &lhs, T const &rhs)
 Equality of a complex and a real number.
 
template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool operator== (T const &lhs, Complex< T > const &rhs)
 Equality of a real and a complex number.
 
template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool operator!= (Complex< T > const &lhs, Complex< T > const &rhs)
 Inequality of two complex numbers.
 
template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool operator!= (Complex< T > const &lhs, T const &rhs)
 Inequality of a complex and a real number.
 
template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool operator!= (T const &lhs, Complex< T > const &rhs)
 Inequality of a real and a complex number.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACCabs (Complex< T > const &x)
 Host-only math functions matching std::complex<T>.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > acos (Complex< T > const &x)
 Arc cosine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > acosh (Complex< T > const &x)
 Arc hyperbolic cosine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACCarg (Complex< T > const &x)
 Argument.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > asin (Complex< T > const &x)
 Arc sine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > asinh (Complex< T > const &x)
 Arc hyperbolic sine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > atan (Complex< T > const &x)
 Arc tangent.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > atanh (Complex< T > const &x)
 Arc hyperbolic tangent.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > conj (Complex< T > const &x)
 Complex conjugate.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > cos (Complex< T > const &x)
 Cosine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > cosh (Complex< T > const &x)
 Hyperbolic cosine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > exp (Complex< T > const &x)
 Exponential.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > log (Complex< T > const &x)
 Natural logarithm.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > log10 (Complex< T > const &x)
 Base 10 logarithm.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACCnorm (Complex< T > const &x)
 Squared magnitude.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > polar (T const &r, T const &theta=T())
 Get a complex number with given magnitude and phase angle.
 
template<typename T , typename U >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC auto pow (Complex< T > const &x, Complex< U > const &y)
 Complex power of a complex number.
 
template<typename T , typename U >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC auto pow (Complex< T > const &x, U const &y)
 Real power of a complex number.
 
template<typename T , typename U >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC auto pow (T const &x, Complex< U > const &y)
 Complex power of a real number.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > proj (Complex< T > const &x)
 Projection onto the Riemann sphere.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > sin (Complex< T > const &x)
 Sine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > sinh (Complex< T > const &x)
 Hyperbolic sine.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > sqrt (Complex< T > const &x)
 Square root.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > tan (Complex< T > const &x)
 Tangent.
 
template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > tanh (Complex< T > const &x)
 Hyperbolic tangent.
 

Variables

template<typename T , typename SFINAE = void>
constexpr bool isView = false
 

Function Documentation

◆ abs()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC T alpaka::internal::abs ( Complex< T > const &  x)
constexpr

Host-only math functions matching std::complex<T>.

Due to issue #1688, these functions are technically marked host-device and suppress related warnings. However, they must be called for host only.

They take and return alpaka::Complex (or a real number when appropriate). Internally cast, fall back to std::complex implementation and cast back. These functions can be used directly on the host side. They are also picked up by ADL in math traits for CPU backends.

On the device side, alpaka math traits must be used instead. Note that the set of the traits is currently a bit smaller. Absolute value

Definition at line 380 of file Complex.hpp.

◆ acos()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::acos ( Complex< T > const &  x)
constexpr

Arc cosine.

Definition at line 388 of file Complex.hpp.

◆ acosh()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::acosh ( Complex< T > const &  x)
constexpr

Arc hyperbolic cosine.

Definition at line 396 of file Complex.hpp.

◆ arg()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC T alpaka::internal::arg ( Complex< T > const &  x)
constexpr

Argument.

Definition at line 404 of file Complex.hpp.

◆ asin()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::asin ( Complex< T > const &  x)
constexpr

Arc sine.

Definition at line 412 of file Complex.hpp.

◆ asinh()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::asinh ( Complex< T > const &  x)
constexpr

Arc hyperbolic sine.

Definition at line 420 of file Complex.hpp.

◆ atan()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::atan ( Complex< T > const &  x)
constexpr

Arc tangent.

Definition at line 428 of file Complex.hpp.

◆ atanh()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::atanh ( Complex< T > const &  x)
constexpr

Arc hyperbolic tangent.

Definition at line 436 of file Complex.hpp.

◆ conj()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::conj ( Complex< T > const &  x)
constexpr

Complex conjugate.

Definition at line 444 of file Complex.hpp.

◆ cos()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::cos ( Complex< T > const &  x)
constexpr

Cosine.

Definition at line 452 of file Complex.hpp.

◆ cosh()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::cosh ( Complex< T > const &  x)
constexpr

Hyperbolic cosine.

Definition at line 460 of file Complex.hpp.

◆ exp()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::exp ( Complex< T > const &  x)
constexpr

Exponential.

Definition at line 468 of file Complex.hpp.

◆ log()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::log ( Complex< T > const &  x)
constexpr

Natural logarithm.

Definition at line 476 of file Complex.hpp.

◆ log10()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::log10 ( Complex< T > const &  x)
constexpr

Base 10 logarithm.

Definition at line 484 of file Complex.hpp.

◆ norm()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC T alpaka::internal::norm ( Complex< T > const &  x)
constexpr

Squared magnitude.

Definition at line 492 of file Complex.hpp.

◆ operator!=() [1/3]

template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool alpaka::internal::operator!= ( Complex< T > const &  lhs,
Complex< T > const &  rhs 
)
constexpr

Inequality of two complex numbers.

Note
this and other versions of operator != should be removed since C++20, as so does std::complex

Definition at line 320 of file Complex.hpp.

◆ operator!=() [2/3]

template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool alpaka::internal::operator!= ( Complex< T > const &  lhs,
T const &  rhs 
)
constexpr

Inequality of a complex and a real number.

Definition at line 327 of file Complex.hpp.

◆ operator!=() [3/3]

template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool alpaka::internal::operator!= ( T const &  lhs,
Complex< T > const &  rhs 
)
constexpr

Inequality of a real and a complex number.

Definition at line 335 of file Complex.hpp.

◆ operator*() [1/3]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator* ( Complex< T > const &  lhs,
Complex< T > const &  rhs 
)

Muptiplication of two complex numbers.

Definition at line 244 of file Complex.hpp.

◆ operator*() [2/3]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator* ( Complex< T > const &  lhs,
T const &  rhs 
)

Muptiplication of a complex and a real number.

Definition at line 253 of file Complex.hpp.

◆ operator*() [3/3]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator* ( T const &  lhs,
Complex< T > const &  rhs 
)

Muptiplication of a real and a complex number.

Definition at line 260 of file Complex.hpp.

◆ operator+() [1/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator+ ( Complex< T > const &  lhs,
Complex< T > const &  rhs 
)

Addition of two complex numbers.

Definition at line 202 of file Complex.hpp.

◆ operator+() [2/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator+ ( Complex< T > const &  lhs,
T const &  rhs 
)

Addition of a complex and a real number.

Definition at line 209 of file Complex.hpp.

◆ operator+() [3/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator+ ( Complex< T > const &  val)

Host-device arithmetic operations matching std::complex<T>.

They take and return alpaka::Complex. Unary plus (added for compatibility with std::complex)

Definition at line 188 of file Complex.hpp.

◆ operator+() [4/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator+ ( T const &  lhs,
Complex< T > const &  rhs 
)

Addition of a real and a complex number.

Definition at line 216 of file Complex.hpp.

◆ operator-() [1/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator- ( Complex< T > const &  lhs,
Complex< T > const &  rhs 
)

Subtraction of two complex numbers.

Definition at line 223 of file Complex.hpp.

◆ operator-() [2/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator- ( Complex< T > const &  lhs,
T const &  rhs 
)

Subtraction of a complex and a real number.

Definition at line 230 of file Complex.hpp.

◆ operator-() [3/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator- ( Complex< T > const &  val)

Unary minus.

Definition at line 195 of file Complex.hpp.

◆ operator-() [4/4]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator- ( T const &  lhs,
Complex< T > const &  rhs 
)

Subtraction of a real and a complex number.

Definition at line 237 of file Complex.hpp.

◆ operator/() [1/3]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator/ ( Complex< T > const &  lhs,
Complex< T > const &  rhs 
)

Division of two complex numbers.

Definition at line 267 of file Complex.hpp.

◆ operator/() [2/3]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator/ ( Complex< T > const &  lhs,
T const &  rhs 
)

Division of complex and a real number.

Definition at line 278 of file Complex.hpp.

◆ operator/() [3/3]

template<typename T >
ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::operator/ ( T const &  lhs,
Complex< T > const &  rhs 
)

Division of a real and a complex number.

Definition at line 285 of file Complex.hpp.

◆ operator<<()

template<typename T , typename TChar , typename TTraits >
std::basic_ostream< TChar, TTraits > & alpaka::internal::operator<< ( std::basic_ostream< TChar, TTraits > &  os,
Complex< T > const &  x 
)

Host-only output of a complex number.

Definition at line 335 of file Complex.hpp.

◆ operator==() [1/3]

template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool alpaka::internal::operator== ( Complex< T > const &  lhs,
Complex< T > const &  rhs 
)
constexpr

Equality of two complex numbers.

Definition at line 294 of file Complex.hpp.

◆ operator==() [2/3]

template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool alpaka::internal::operator== ( Complex< T > const &  lhs,
T const &  rhs 
)
constexpr

Equality of a complex and a real number.

Definition at line 302 of file Complex.hpp.

◆ operator==() [3/3]

template<typename T >
constexpr ALPAKA_FN_HOST_ACC bool alpaka::internal::operator== ( T const &  lhs,
Complex< T > const &  rhs 
)
constexpr

Equality of a real and a complex number.

Definition at line 310 of file Complex.hpp.

◆ operator>>()

template<typename T , typename TChar , typename TTraits >
std::basic_istream< TChar, TTraits > & alpaka::internal::operator>> ( std::basic_istream< TChar, TTraits > &  is,
Complex< T > const &  x 
)

Host-only input of a complex number.

Definition at line 353 of file Complex.hpp.

◆ polar()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::polar ( T const &  r,
T const &  theta = T() 
)
constexpr

Get a complex number with given magnitude and phase angle.

Definition at line 500 of file Complex.hpp.

◆ pow() [1/3]

template<typename T , typename U >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC auto alpaka::internal::pow ( Complex< T > const &  x,
Complex< U > const &  y 
)
constexpr

Complex power of a complex number.

Definition at line 508 of file Complex.hpp.

◆ pow() [2/3]

template<typename T , typename U >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC auto alpaka::internal::pow ( Complex< T > const &  x,
U const &  y 
)
constexpr

Real power of a complex number.

Definition at line 519 of file Complex.hpp.

◆ pow() [3/3]

template<typename T , typename U >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC auto alpaka::internal::pow ( T const &  x,
Complex< U > const &  y 
)
constexpr

Complex power of a real number.

Definition at line 527 of file Complex.hpp.

◆ proj()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::proj ( Complex< T > const &  x)
constexpr

Projection onto the Riemann sphere.

Definition at line 535 of file Complex.hpp.

◆ sin()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::sin ( Complex< T > const &  x)
constexpr

Sine.

Definition at line 543 of file Complex.hpp.

◆ sinh()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::sinh ( Complex< T > const &  x)
constexpr

Hyperbolic sine.

Definition at line 551 of file Complex.hpp.

◆ sqrt()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::sqrt ( Complex< T > const &  x)
constexpr

Square root.

Definition at line 559 of file Complex.hpp.

◆ tan()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::tan ( Complex< T > const &  x)
constexpr

Tangent.

Definition at line 567 of file Complex.hpp.

◆ tanh()

template<typename T >
ALPAKA_NO_HOST_ACC_WARNING constexpr ALPAKA_FN_HOST_ACC Complex< T > alpaka::internal::tanh ( Complex< T > const &  x)
constexpr

Hyperbolic tangent.

Definition at line 575 of file Complex.hpp.

Variable Documentation

◆ isView

template<typename T , typename SFINAE = void>
constexpr bool alpaka::internal::isView = false
inlineconstexpr

Definition at line 20 of file ViewAccessOps.hpp.