@@ -109,10 +109,10 @@ namespace cp_algo::linalg {
109
109
}
110
110
return res;
111
111
}
112
- matrix submatrix (auto viewx, auto viewy) const {
113
- return from ( *this | viewx | std::views::transform ([& ](auto const & y) {
112
+ auto submatrix (auto viewx, auto viewy) const {
113
+ return *this | viewx | std::views::transform ([viewy ](auto const & y) {
114
114
return y | viewy;
115
- })) ;
115
+ });
116
116
}
117
117
118
118
matrix T () const {
@@ -214,7 +214,7 @@ namespace cp_algo::linalg {
214
214
det *= b[i][i];
215
215
b[i] *= base (1 ) / b[i][i];
216
216
}
217
- return {det, b.submatrix (std::views::all, std::views::drop (n ()))};
217
+ return {det, from ( b.submatrix (std::views::all, std::views::drop (n () )))};
218
218
}
219
219
220
220
// Can also just run gauss on T() | eye(m)
@@ -238,15 +238,15 @@ namespace cp_algo::linalg {
238
238
// [solution, basis], transposed
239
239
std::optional<std::array<matrix, 2 >> solve (matrix t) const {
240
240
matrix sols = (*this | t).kernel ();
241
- if (sols.n () < t.m () || sols.submatrix (
241
+ if (sols.n () < t.m () || from ( sols.submatrix (
242
242
std::views::drop (sols.n () - t.m ()),
243
243
std::views::drop (m ())
244
- ) != -eye (t.m ())) {
244
+ )) != -eye (t.m ())) {
245
245
return std::nullopt;
246
246
} else {
247
247
return std::array{
248
- sols.submatrix (std::views::drop (sols.n () - t.m ()), std::views::take (m ())),
249
- sols.submatrix (std::views::take (sols.n () - t.m ()), std::views::take (m ()))
248
+ from ( sols.submatrix (std::views::drop (sols.n () - t.m ()), std::views::take (m () ))),
249
+ from ( sols.submatrix (std::views::take (sols.n () - t.m ()), std::views::take (m () )))
250
250
};
251
251
}
252
252
}
0 commit comments