code: public Matrix getQ () {
  		Matrix X = new Matrix(m,n);
  		double[][] Q = X.getArray();
  		for (int k = n-1; k >= 0; k--) {
  			for (int i = 0; i < m; i++) {
  				Q[i][k] = 0.0;
  			}
  			Q[k][k] = 1.0;
  			for (int j = k; j < n; j++) {
  				if (QR[k][k] != 0) {
  					double s = 0.0;
  					for (int i = k; i < m; i++) {
  						s += QR[i][k]*Q[i][j];
  					}
  					s = -s/QR[k][k];
  					for (int i = k; i < m; i++) {
  						Q[i][j] += s*QR[i][k];
  					}
  				}
  			}
  		}
  		return X;
  	}
docs: Generate and return the (economy-sized) orthogonal factor
  @return     Q