function QR = basicqr_append(QR, A) [nr, nc] = size(QR.QR); [nrA, ncA] = size(A); if nrA ~= nr, error(sprintf("matrix must be conformal with QR, leading dimension %d",M)); endif A = basicqr_apply_q(QR, A); if nr <= nc, QR.QR = [QR.QR, A]; return; endif QR2 = basicqr(A(nc+1:nrA, :)); QR.tau = [QR.tau, QR2.tau]; QR.QR = [QR.QR, [A(1:nc,:); QR2.QR]]; endfunction