751{
752
753
754 row_elem &r =
mat->rows[index];
755 if (r.
len == 0)
return false;
757
758 int pivotcol = r.
comps[0];
759 int pivotrow =
mat->columns[pivotcol].head;
760
764
765 int firstnonzero = -1;
766 int first = r.
comps[0];
768 do
769 {
770 pivotrow =
mat->columns[first].head;
771 if (pivotrow >= 0)
772 {
773 row_elem &pivot_rowelem =
mat->rows[pivotrow];
777 pivot_coeffs,
778 Range(pivot_rowelem.
comps,
779 pivot_rowelem.
comps + pivot_rowelem.
len)
780 );
781 int last1 = pivot_rowelem.
comps[pivot_rowelem.
len - 1];
782 if (last1 > last) last = last1;
783 }
784 else if (firstnonzero == -1)
785 firstnonzero = first;
787 }
788 while (first <= last);
789
792
796
797
798
800
801
802
804
805
806
807
808
809
810
811
812
814}
const ElementArray & get_coeffs_array(row_elem &r)
bool is_pivot_row(int index) const
const VectorArithmetic * mVectorArithmetic