function QRdata = basicqr(QR) [M, N] = size(QR); tau = zeros(1,N); for j=1:min(M,N), [QR(j:M,j), tau(j), alpha] = make_house(QR(j:M,j)); if j < N, QR(j,j) = 1; # The parentheses are necessary for performance... QR(j:M, j+1:N) -= \ tau(j)*QR(j:M,j) * ( QR(j:M,j)'*QR(j:M,j+1:N) ); endif QR(j,j) = alpha; endfor QRdata.QR = QR; QRdata.tau = tau; endfunction