docs: function() {
      var M = this.toRightTriangular(), rank = 0;
      var ni = this.elements.length, ki = ni, i, nj, kj = this.elements[0].length, j;
      do { i = ki - ni;
        nj = kj;
        do { j = kj - nj;
          if (Math.abs(M.elements[i][j]) > Sylvester.precision) { rank++; break; }
        } while (--nj);
      } while (--ni);
      return rank;
    }