function [X, D, s] = condeig(A)
%CONDEIG Condition number with respect to eigenvalues.
%   CONDEIG(A) is a vector of condition numbers for the eigenvalues
%   of A. These condition numbers are the reciprocals of the cosines 
%   of the angles between the left and right eigenvectors.
%       [V,D,s] = CONDEIG(A) is equivalent to:
%       [V,D] = EIG(A); s = CONDEIG(A);
%
%   Large condition numbers imply that A is near a matrix with
%   multiple eigenvalues.
%
%   See also COND.

%   Note:
%   CONDEIG returns the reciprocals of the Wilkinson s(lambda) 
%   numbers.

%   Reference:
%   [1] G.H. Golub and C.F. Van Loan, Matrix Computations, Second
%       Edition, Johns Hopkins University Press, Baltimore, Maryland,
%       1989, sec. 7.2.2.

%   Copyright (c) 1984-98 by The MathWorks, Inc.
%   $Revision: 1.8 $  $Date: 1997/11/21 23:38:20 $

[n,n] = size(A);
s = zeros(n,1);

[X, D] = eig(A);
Y = inv(X);
for i=1:n
    s(i) = norm(Y(i,:)) * norm(X(:,i)) / abs( Y(i,:)*X(:,i) );
end

if nargout <= 1, X = s; end
