818{
821
823 for (int i = nrows - 1; i >= 0; i--)
824 {
825 row_elem &r =
mat->rows[i];
827 continue;
828
829 bool anychange = false;
832 int firstnonzero = r.
comps[0];
833 int first = (r.
len == 1 ? ncols : r.
comps[1]);
835 while (first <= last)
836 {
837 int pivotrow =
mat->columns[first].head;
838 if (pivotrow >= 0)
839 {
840 anychange = true;
841 row_elem &pivot_rowelem =
845 Range(pivot_rowelem.
comps,
846 pivot_rowelem.
comps + pivot_rowelem.
len));
847 int last1 = pivot_rowelem.
comps[pivot_rowelem.
len - 1];
848 if (last1 > last) last = last1;
849 }
850 else if (firstnonzero == ncols)
851 firstnonzero = first;
853 };
854 if (anychange)
855 {
856
860
861
862
863
864
865
866
867
868
869
870
874 firstnonzero, last);
876
877
878
879
881 }
882 else
883 {
885 }
887 {
889 }
890 }
891
893}
const VectorArithmetic * mVectorArithmetic