Dear all,
Is it possible to echelonize just a part of the matrix?
(If I have to be more specific, the lower or upper right corner.)
I tried creating and echelonizing a window,
something along the lines of (pseudocode alert):
```
m = mzd_init(n_rows, n_columns);
mzd_randomize(m);
w = mzd_init_window(m, rl, cl, n_rows, n_columns);
mzd_echelonize(w, 1);
mzd_free_window(w);
println(m);
```
But that only seems to work when `rl = cl = 0`.
(I might have bugs though.)
***
To avoid the XY problem, what I’m trying to do is
to implement a constraint propagator for
a system of parity constraints as a part of a larger problem.
Variables can get assigned by other constraints as well,
so 1s concentrate in a continuously shrinking part of the matrix.
Currently, I’m just copying the relevant part of the matrix
to a freshly created smaller matrix and echelonize the latter.
It actually works pretty well performance-wise, but
I was wondering whether there was a more straightforward way.
***
Thank you in advance!
(And thanks for the great library!)
--
Best,
Vladimir