Contents

namespace

SushiBLAS::Kernels

Declared in
include/SushiBLAS/kernels/blas/conjugation.hpp

Contains

Typedefs

template <typename T, typename Conj>
using SushiBLAS::Kernels::ConjugationFor = std::conditional_t<Core::is_complex_v<T>, Conj, Unconjugated>

Names the policy a kernel is instantiated with for element type T.

Returns

Conj for a complex T, Unconjugated for a real one.

template <typename T, typename Conj>
using SushiBLAS::Kernels::RankUpdateScalar = std::conditional_t<std::is_same_v<Conj, Conjugated>, RealType<T>, T>

Names the type of alpha and beta in a rank-1 or rank-k update under a policy.

Returns

The real component type under Conjugated (her, herk), T otherwise (syr, syrk).

template <typename T>
using SushiBLAS::Kernels::Accumulator = typename AccumulatorOf<T>::type

Shorthand for AccumulatorOf<T>::type.

template <typename T>
using SushiBLAS::Kernels::RealType = typename RealOf<T>::type

Shorthand for RealOf<T>::type.

template <typename T>
using SushiBLAS::Kernels::ReferenceAccumulator = typename ReferenceAccumulatorOf<T>::type

Shorthand for ReferenceAccumulatorOf<T>::type.

Functions

constexpr OperandAccess operand_access(Core::Layout layout, Core::Transpose trans, int64_t ld) noexcept

Resolves a layout, a Transpose and a leading dimension into an OperandAccess.

See also

include/SushiBLAS/kernels/README.md

template <typename T>
constexpr T conjugate(T value) noexcept

Returns a real value unchanged.

template <typename R>
constexpr std::complex< R > conjugate(const std::complex< R > &value) noexcept

Returns the complex conjugate of value.

template <typename T>
constexpr T conjugate_if(bool enabled, T value) noexcept

Returns a real value unchanged, whatever enabled is.

template <typename R>
constexpr std::complex< R > conjugate_if(bool enabled, const std::complex< R > &value) noexcept

Returns the conjugate of value when enabled is true, value otherwise.

template <typename T>
constexpr T real_part(T value) noexcept

Returns a real value unchanged.

template <typename R>
constexpr std::complex< R > real_part(const std::complex< R > &value) noexcept

Returns value with its imaginary part set to zero, in the complex type.

template <typename T>
constexpr T multiply(T a, T b) noexcept

Returns a * b for two real values.

template <typename R>
constexpr std::complex< R > multiply(const std::complex< R > &a, const std::complex< R > &b) noexcept

Returns the complex product a * b by the four-product formula.

See also

include/SushiBLAS/support/README.md

template <typename R>
constexpr std::complex< R > multiply(R a, const std::complex< R > &b) noexcept

Returns a complex value scaled by a real factor, component by component.

template <typename T>
constexpr T divide(T a, T b) noexcept

Returns a / b for two real values.

template <typename R>
constexpr std::complex< R > divide(const std::complex< R > &a, const std::complex< R > &b) noexcept

Returns the complex quotient a / b by Smith's algorithm.

Returns

NaN components when b is zero.

See also

include/SushiBLAS/support/README.md