function T = tridag(A) % usage: T = tridag(A) % description: given mxm A that is real symmetric, reduces % it to tridiagonal form T and returns T. m = size(A,1); T = A; for k = 1:m-2 x = T(k+1:m,k); x(1) = ((x(1)>=0)-(x(1)<0))*norm(x) + x(1); x = x/norm(x); T(k+1:m,k:m) = T(k+1:m,k:m) - 2*x*(x'*T(k+1:m,k:m)); T(1:m,k+1:m) = T(1:m,k+1:m) - 2*(T(1:m,k+1:m)*x)*x'; end T = triu(T) + triu(T,1)';