rowsort := proc(A) local S, n, m, piv, i, A1, opts; n, m := op(1,A); opts := table([op(3,A)]); piv := proc(i) local j; for j from 1 to m do if not member(A[i,j], {0,.0,-.0}) then return j; end if; end do; m end proc: S := map(attributes, sort([seq(setattribute(SFloat(piv(i),0), i), i=1..n)], `<`)); A1 := rtable(1..n, 1..m, 'subtype'='Matrix', 'datatype'=opts['datatype'], 'storage'=opts['storage']); for i to n do A1[i, 1..-1] := A[S[i], 1..-1]; end do; A1 end proc: pivots := proc(A) local n, m, piv, i, opts; n, m := op(1,A); opts := table([op(3,A)]); piv := proc(i) local j; for j from 1 to m do if not member(A[i,j], {0,.0,-.0}) then return j; end if; end do; m end proc: [seq(piv(i), i=1..n)]; end proc: