Gauss-Jordan matrix inversion: Difference between revisions
m
→{{header|Raku}}: sync up 'rref'
(→{{header|jq}}: matrix(1;_;_)) |
SqrtNegInf (talk | contribs) m (→{{header|Raku}}: sync up 'rref') |
||
Line 3,392:
=={{header|Raku}}==
(formerly Perl 6)
Uses bits and pieces from other tasks, [[Reduced_row_echelon_form#Raku|Reduced row echelon form]] primarily.
Line 3,404:
sub identity ($n) { [ 1, |(0 xx $n-1) ], *.rotate(-1).Array ... *.tail }
# reduced row echelon form (from 'Gauss-Jordan elimination' task)
sub rref (@m) {
▲ my ($lead, $rows, $cols) = 0, +@m, +@m[0];
for ^$rows -> $r {
Line 3,418 ⟶ 3,417:
}
@m[$i, $r] = @m[$r, $i] if $r != $i;
for ^$rows -> $n {
next if $n == $r;
@m[$n] »-=» @m[$r] »
}
++$lead;
Line 3,428 ⟶ 3,426:
@m
}
sub rat-or-int ($num) {
return $num unless $num ~~ Rat|FatRat;
return $num.narrow if $num.narrow
$num.nude.join: '/';
}
|