function [A, tau] = alst2c(A) % to obtain the QR factorization of the matrix A using Householder % transformations. Use LAPACK's CGEQRF routine storage. % function [A,tau] = alst2c(A) % (c) 2020 Alain Hebert, Polytechnique Montreal [m, n] = size(A); if(n < 1), error('n < 1'), end if(n > m), error(['n > m (',num2str(n),num2str(m),')']), end tau = zeros(1,n); for j = 1:n m1 = m-j+1; w = A(j:m,j); x1 = w(1); ax = sqrt(w(1:m1)'*w(1:m1)); a1 = abs(x1); s = sign(w(1)); ssss = -ax*s; a1 = a1+ax; w(1) = a1*s; dd2 = a1*ax; if dd2 == 0, error('singular reflection'), end w = w/sqrt(dd2); A(j:m,j) = w; if j < n A(j:m,j+1:n) = A(j:m,j+1:n)-w*(w'*A(j:m,j+1:n)); end diag = A(j,j); A(j:m,j) = A(j:m,j)/diag; A(j,j) = ssss; tau(j) = -diag'*diag; end