docs: function() {
      if (!this.isSquare()) { return null; }
      var M = this.toRightTriangular();
      var det = M.elements[0][0], n = M.elements.length - 1, k = n, i;
      do { i = k - n + 1;
        det = det * M.elements[i][i];
      } while (--n);
      return det;
    }