Gauss-Jordan matrix inversion: Difference between revisions

Content added Content deleted
Line 1,056: Line 1,056:
macdef do_needless_things = true
macdef do_needless_things = true
#else
#else
macdef do_needless_things = true
macdef do_needless_things = false
#endif
#endif


Line 1,158: Line 1,158:
var k : intGte 1
var k : intGte 1
in
in
if do_needless_things then
needlessly_set_to_value (A, i, j, Zero);
let
for* {k : int | j + 1 <= k; k <= n + 1}
var k : intGte 1
.<(n + 1) - k>.
in
(k : int k) =>
needlessly_set_to_value (A, i, j, Zero);
(k := succ j; k <> succ n; k := succ k)
for* {k : int | j + 1 <= k; k <= n + 1}
A[i, k] := A[i, k] - (A[j, k] * lead_val);
.<(n + 1) - k>.
(k : int k) =>
(k := succ j; k <> succ n; k := succ k)
A[i, k] := A[i, k] - (A[j, k] * lead_val)
end;
for* {k : int | 1 <= k; k <= n + 1} .<(n + 1) - k>.
for* {k : int | 1 <= k; k <= n + 1} .<(n + 1) - k>.
(k : int k) =>
(k : int k) =>