17 using batch_size = std::integral_constant<index_t, 4>;
18 constexpr auto storage_order = batmat::matrix::StorageOrder::ColMajor;
22 index_t n = 3, m = n + 5;
23 Mat C{{.rows = n, .cols = n}}, A{{.rows = n, .cols = m}};
25 std::mt19937 rng{12345};
26 std::uniform_real_distribution<real_t> uni{-1.0, 1.0};
27 std::ranges::generate(A, [&] {
return uni(rng); });
36 for (index_t l = 0; l < C.depth(); ++l) {
44 const auto eps = std::numeric_limits<real_t>::epsilon();
45 for (index_t l = 0; l < C.depth(); ++l)
46 for (index_t c = 0; c < C.cols(); ++c)
47 for (index_t r = c; r < C.rows(); ++r)
48 errors += std::abs(C(l, r, c) - L(l, r, c)) < 10 * eps ? 0 : 1;
std::ostream & print_python(std::ostream &os, std::span< T, E > x, std::string_view end="\n", bool squeeze=true)
void syrk(Structured< VA, SA > A, Structured< VD, SD > D, Opts... opts)
D = A Aᵀ with D symmetric.
void potrf(Structured< VC, SC > C, Structured< VD, SC > D, simdified_value_t< VC > regularization=0)
D = chol(C) with C symmetric, D triangular.