21template <
class OutputMdspan,
class Scalar,
class LhsMdspan,
class RhsMdspan>
25 std::same_as<std::remove_cv_t<typename std::remove_cvref_t<OutputMdspan>::element_type>,
Scalar> &&
26 std::same_as<std::remove_cv_t<typename std::remove_cvref_t<LhsMdspan>::element_type>,
Scalar> &&
27 std::same_as<std::remove_cv_t<typename std::remove_cvref_t<RhsMdspan>::element_type>,
Scalar> &&
28 requires(OutputMdspan& output, LhsMdspan& lhs, RhsMdspan& rhs,
29 typename std::remove_cvref_t<OutputMdspan>::index_type index,
Scalar value) {
30 static_cast<Scalar>(output.operator[](index, index));
31 static_cast<Scalar>(lhs.operator[](index, index));
32 static_cast<Scalar>(rhs.operator[](index, index));
33 output.operator[](index, index) =
value;
39template <
class OutputMdspan, uni20::Scalar Scalar,
class LhsMdspan,
class RhsMdspan>
43 using output_type = std::remove_cvref_t<OutputMdspan>;
44 using index_type =
typename output_type::index_type;
54 if (alpha ==
Scalar{} || inner == 0)
A mutable mdspan-like type with a specified static rank.
Definition mdspan/concepts.hpp:494
An mdspan-like type with a specified static rank.
Definition mdspan/concepts.hpp:447
Concept for numeric scalar types (integer, real, or complex).
Definition scalar_concepts.hpp:81
Report whether resolved mdspans support reference CPU GEMM expressions.
Definition linalg/cpu/gemm.hpp:22
locale_t value
Definition data_table.cpp:49
Mdspan concept and accessor extensions for Uni20.
T product(std::vector< T > const &values)
Definition mpreal_exact_example.cpp:13
Definition strided_transform.hpp:20
void gemm(OutputMdspan &&output, Scalar alpha, LhsMdspan &&lhs, RhsMdspan &&rhs, Scalar beta)
Execute reference CPU GEMM on resolved mdspans.
Definition linalg/cpu/gemm.hpp:41
std::ptrdiff_t index_type
Definition types.hpp:19
mpreal beta(mpreal const &a, mpreal const &x)
Real Beta function; positive rational/integer pairs retain exact values.
Definition mpreal_special.hpp:164
#define CHECK_EQUAL(a, b,...)
Definition trace.hpp:309