Gauss-Jordan matrix inversion: Difference between revisions

Line 1,124:
end
 
fn {}
subtract_normalized_pivot_row
(i : one_to_n, j : one_to_n) :<!refwrt> void =
Line 1,137:
needlessly_set_to_value (A, i, j, Zero);
for* {k : int | j + 1 <= k; k <= n + 1} .<(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);
for* {k : int | 1 <= k; k <= n + 1} .<(n + 1) - k>.
(k : int k) =>
(k := 1; k <> succ n; k := succ k)
B[i, k] := B[i, k] - (B[j, k] * lead_val)
end
end
 
fn {}
subtract_normalized_pivot_row_B_only
(i : one_to_n, j : one_to_n) :<!refwrt> void =
let
prval [j : int] EQINT () = eqint_make_gint j
val lead_val = A[i, j]
in
if lead_val <> Zero then
let
var k : intGte 1
in
needlessly_set_to_value (A, i, j, Zero);
for* {k : int | j + 1 <= k; k <= n + 1}
.<(n + 1) - k>.
(k : int k) =>
(k := succ j; k <> succ n; k := succ k)
Line 1,213 ⟶ 1,189:
(i : int i) =>
(i := 1; i <> j; i := succ i)
subtract_normalized_pivot_row_B_onlysubtract_normalized_pivot_row (i, j);
for* {i : int | j + 1 <= i; i <= n + 1}
.<(n + 1) - i>.
1,448

edits