function [U,s,V] = csvd(A,tst) 
%CSVD Compact singular value decomposition. 
% 
% s = csvd(A) 
% [U,s,V] = csvd(A) 
% [U,s,V] = csvd(A,'full') 
% 
% Computes the compact form of the SVD of A: 
%    A = U*diag(s)*V', 
% where 
%    U  is  m-by-min(m,n) 
%    s  is  min(m,n)-by-1 
%    V  is  n-by-min(m,n). 
% 
% If a second argument is present, the full U and V are returned. 
 
% Per Christian Hansen, IMM, 06/22/93. 
 
if (nargin==1) 
  if (nargout > 1) 
    [m,n] = size(A); 
    if (m >= n) 
      [U,s,V] = svd(full(A),0); s = diag(s); 
    else 
      [V,s,U] = svd(full(A)',0); s = diag(s); 
    end 
  else 
    U = svd(full(A)); 
  end 
else 
  if (nargout > 1) 
    [U,s,V] = svd(full(A)); s = diag(s); 
  else 
    U = svd(full(A)); 
  end 
end 
