Showing content from https://kokkos.github.io/kokkos-core-wiki/API/core/numerics/complex.html below:
complex - Kokkos documentation
complex
¶
Defined in header <Kokkos_Complex.hpp>
which is included from <Kokkos_Core.hpp>
Description¶
complex
is a class template for representing and manipulating complex numbers.
-
This is intended as a replacement for std::complex<T>
.
-
Note: If z
has type Kokkos::complex<T>
, casting such as reinterpret_cast<T(&)[2]>(z)
leads to undefined behavior (this differs from std::complex
).
Interface¶
-
template<class T>
class complex¶
-
-
Template Parameters:
-
T – The type of the real and imaginary components.
-
T
must be a floating point type (float
, double
, long double
) or an extended floating point type.
-
T
cannot be const
and/or volatile
qualified.
-
Some types might not work with a specific backend (such as long double
on CUDA or SYCL).
Public Types:
-
using value_type = T¶
Constructors & Assignment Operators:
-
complex()¶
-
Default constructor zero initializes the real and imaginary components.
-
template<class U>
complex(complex<U> z) noexcept¶
-
Conversion constructor initializes the real component to static_cast<T>(z.real())
and the imaginary component to static_cast<T>(z.imag())
.
Constraints: U
is convertible to T
.
-
complex(std::complex<T> z) noexcept¶
-
complex &operator=(std::complex<T> z) noexcept¶
-
Implicit conversion from std::complex
initializes the real component to z.real()
and the imaginary component to z.imag()
.
-
constexpr complex(T r) noexcept¶
-
constexpr complex &operator=(T r) noexcept¶
-
Initializes the real component to r
and zero initializes the imaginary component.
-
constexpr complex(T r, T i) noexcept¶
-
Initializes the real component to r
and the imaginary component to i
.
-
template<class U>
complex(volatile const complex<U>&) noexcept¶
-
Deprecated since version 4.0.0.
-
void operator=(const complex&) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
volatile complex &operator=(volatile const complex&) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
complex &operator=(volatile const complex&) noexcept¶
-
Deprecated since version 4.0.0.
-
void operator=(volatile const T&) noexcept¶
-
Deprecated since version 4.0.0.
-
void operator=(const T&) volatile noexcept¶
-
Deprecated since version 4.0.0.
Note
Some of the deprecated assignment operators have templated implementations so as not to be copy assignment operators.
Public Member Functions:
-
operator std::complex<T>() const noexcept¶
-
Conversion operator to std::complex
.
-
constexpr T &real() noexcept¶
-
constexpr T real() const noexcept¶
-
-
Returns:
-
The value of the real component.
-
constexpr void real(T r) noexcept¶
-
Assigns r
to the real component.
-
constexpr T &imag() noexcept¶
-
constexpr T imag() const noexcept¶
-
-
Returns:
-
The value of the imaginary component.
-
constexpr void imag(T i) noexcept¶
-
Assigns i
to the imaginary component.
-
constexpr complex &operator+=(complex v) noexcept¶
-
constexpr complex &operator+=(T v) noexcept¶
-
Adds the complex value complex(v)
to the complex value *this
and stores the sum in *this
.
-
constexpr complex &operator-=(complex v) noexcept¶
-
constexpr complex &operator-=(T v) noexcept¶
-
Subtracts the complex value complex(v)
from the complex value *this
and stores the difference in *this
.
-
constexpr complex &operator*=(complex v) noexcept¶
-
constexpr complex &operator*=(T v) noexcept¶
-
Multiplies the complex value complex(v)
by the complex value *this
and stores the product in *this
.
-
constexpr complex &operator/=(complex v) noexcept¶
-
constexpr complex &operator/=(T v) noexcept¶
-
Divides the complex value complex(v)
into the complex value *this
and stores the quotient in *this
.
-
volatile T &real() volatile noexcept¶
-
Deprecated since version 4.0.0.
-
T real() volatile const noexcept¶
-
Deprecated since version 4.0.0.
-
volatile T &imag() volatile noexcept¶
-
Deprecated since version 4.0.0.
-
T imag() volatile const noexcept¶
-
Deprecated since version 4.0.0.
-
void operator+=(volatile const complex &v) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
void operator+=(volatile const T &v) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
void operator-=(volatile const complex &v) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
void operator-=(volatile const T &v) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
void operator*=(volatile const complex &v) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
void operator*=(volatile const T &v) volatile noexcept¶
-
Deprecated since version 4.0.0.
-
void operator/=(volatile const complex &v) volatile noexcept(noexcept(T{} / T{}))¶
-
Deprecated since version 4.0.0.
-
void operator/=(volatile const T &v) volatile noexcept(noexcept(T{} / T{}))¶
-
Deprecated since version 4.0.0.
Non-Member Functions:
-
template<typename T1, typename T2>
bool operator==(complex<T1> x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
bool operator==(complex<T1> x, T2 y) noexcept¶
-
template<typename T1, typename T2>
bool operator==(T1 x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
bool operator==(complex<T1> x, std::complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
bool operator==(std::complex<T1> x, complex<T2> y) noexcept¶
-
-
Returns:
-
true
if and only if the real component of complex(x)
equals the real component of complex(y)
and the imaginary component of complex(x)
equals the imaginary component of complex(y)
.
-
template<typename T1, typename T2>
bool operator!=(complex<T1> x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
bool operator!=(complex<T1> x, T2 y) noexcept¶
-
template<typename T1, typename T2>
bool operator!=(T1 x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
bool operator!=(complex<T1> x, std::complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
bool operator!=(std::complex<T1> x, complex<T2> y) noexcept¶
-
-
Returns:
-
!(x == y)
-
template<typename T>
complex<T> operator+(complex<T> x) noexcept¶
-
-
Returns:
-
x
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator+(complex<T1> x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator+(complex<T1> x, T2 y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator+(T1 x, complex<T2> y) noexcept¶
-
-
Returns:
-
The complex value complex(x)
added to the complex value complex(y)
.
-
template<typename T>
complex<T> operator-(complex<T> x) noexcept¶
-
-
Returns:
-
complex(-x.real(), -x.imag())
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator-(complex<T1> x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator-(complex<T1> x, T2 y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator-(T1 x, complex<T2> y) noexcept¶
-
-
Returns:
-
The complex value complex(y)
subtracted from the complex value complex(x)
.
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator*(complex<T1> x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator*(complex<T1> x, T2 y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator*(T1 x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator*(std::complex<T1> x, complex<T2> y) noexcept¶
-
-
Returns:
-
The complex value complex(x)
multiplied by the complex value complex(y)
.
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator/(complex<T1> x, complex<T2> y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator/(complex<T1> x, T2 y) noexcept¶
-
template<typename T1, typename T2>
complex<std::common_type_t<T1, T2>> operator/(T1 x, complex<T2> y) noexcept¶
-
-
Returns:
-
The complex value complex(y)
divided into the complex value complex(x)
.
-
template<typename T>
std::istream &operator>>(std::ostream &i, complex<T> &x)¶
-
Extracts a complex number x of the form: u
, (u)
or (u,v)
where u
is the real part and v
is the imaginary part and returns i
.
-
template<typename T>
std::ostream &operator<<(std::ostream &o, complex<T> x)¶
-
-
Returns:
-
o << std::complex(x)
-
template<typename T>
T real(complex<T> x) noexcept¶
-
-
Returns:
-
x.real()
.
-
template<typename T>
T imag(complex<T> x) noexcept¶
-
-
Returns:
-
x.imag()
.
-
template<typenmame T>
complex<T> polar(T rho, T theta = T())¶
-
-
Returns:
-
The complex
value corresponding to a complex number whose magnitude is rho
and whose phase angle is theta
.
-
template<typename T>
T abs(complex<T> x)¶
-
-
Returns:
-
The magnitude of x
.
-
template<typename T1, typename T2>
complex<U> pow(complex<T1> x, complex<T2> y)¶
-
template<typename T1, typename T2>
complex<U> pow(complex<T1> x, T2 y)¶
-
template<typename T1, typename T2>
complex<U> pow(T1 x, complex<T2> y)¶
-
-
Returns:
-
The complex power of base x
raised to the y
-th power, defined as exp(y * log(x))
. U
is float
if T1
and T2
are float
; otherwise U
is long double
if T1
or T2
is long double
; otherwise U
is double
.
-
template<typename T>
complex<T> sqrt(complex<T> x)¶
-
-
Returns:
-
The complex square root of x
, in the range of the right half-plane.
-
template<typename T>
complex<T> conj(complex<T> x) noexcept¶
-
-
Returns:
-
The complex conjugate of x
.
-
template<typename T>
complex<T> exp(complex<T> x)¶
-
template<typename T>
complex<T> exp(std::complex<T> x)¶
-
-
Returns:
-
The complex base-e exponential of complex(x)
.
-
template<typename T>
complex<T> log(complex<T> x)¶
-
-
Returns:
-
The complex natural (base-e) logarithm of x.
-
template<typename T>
complex<T> log10(complex<T> x)¶
-
-
Returns:
-
The complex common (base-10) logarithm of x
, defined as log(x) / log(10)
.
-
template<typename T>
complex<T> sin(complex<T> x)¶
-
-
Returns:
-
The complex sine of x
.
-
template<typename T>
complex<T> cos(complex<T> x)¶
-
-
Returns:
-
The complex cosine of x
.
-
template<typename T>
complex<T> tan(complex<T> x)¶
-
-
Returns:
-
The complex tangent of x
.
-
template<typename T>
complex<T> sinh(complex<T> x)¶
-
-
Returns:
-
The complex hyperbolic sine of x
.
-
template<typename T>
complex<T> cosh(complex<T> x)¶
-
-
Returns:
-
The complex hyperbolic cosine of x
.
-
template<typename T>
complex<T> tanh(complex<T> x)¶
-
-
Returns:
-
The complex hyperbolic tangent of x
.
-
template<typename T>
complex<T> asinh(complex<T> x)¶
-
-
Returns:
-
The complex arc hyperbolic sine of x
.
-
template<typename T>
complex<T> acosh(complex<T> x)¶
-
-
Returns:
-
The complex arc hyperbolic cosine of x
.
-
template<typename T>
complex<T> atanh(complex<T> x)¶
-
-
Returns:
-
The complex arc hyperbolic tangent of x
.
-
template<typename T>
complex<T> asin(complex<T> x)¶
-
-
Returns:
-
The complex arc sine of x
.
-
template<typename T>
complex<T> acos(complex<T> x)¶
-
-
Returns:
-
The complex arc cosine of x
.
-
template<typename T>
complex<T> atan(complex<T> x)¶
-
-
Returns:
-
The complex arc tangent of x
.
-
template<size_t I, typename T>
constexpr T &get(complex<T> &z) noexcept¶
-
template<size_t I, typename T>
constexpr T &&get(complex<T> &&z) noexcept¶
-
template<size_t I, typename T>
constexpr const T &get(const complex<T> &z) noexcept¶
-
template<size_t I, typename T>
constexpr const T &&get(complex<T> &&z) noexcept¶
-
Tuple protocol / structured binding support.
-
Returns:
-
A reference to the real part of z
if I == 0
is true
; a reference to the imaginary part of z
if I == 1
is true
.
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4