10 constexpr real singular_tol = 1
e-14;
19 for (
idx k = 0; k < n; ++k) {
21 real pivot_val = std::abs(M(k, k));
22 for (
idx i = k + 1; i < n; ++i) {
23 real v = std::abs(M(i, k));
32 for (
idx j = 0; j < n; ++j)
33 std::swap(M(k, j), M(pivot_row, j));
35 if (std::abs(M(k, k)) < singular_tol) {
40 const real inv_ukk =
real(1) / M(k, k);
41 for (
idx i = k + 1; i < n; ++i)
44 for (
idx i = k + 1; i < n; ++i) {
45 const real lik = M(i, k);
46 for (
idx j = k + 1; j < n; ++j)
47 M(i, j) -= lik * M(k, j);