# HG changeset patch # User Rik # Date 1300428707 25200 # Node ID c2e8c9d9e284e50783c26f0800843a5ad38567bd # Parent 3d6584617da0d19bd51375c233dfdbbec0ac6a52 Fix bug #32818, nonconformant arguments in svds. diff -r 3d6584617da0 -r c2e8c9d9e284 scripts/ChangeLog --- a/scripts/ChangeLog Thu Mar 17 21:41:15 2011 -0700 +++ b/scripts/ChangeLog Thu Mar 17 23:11:47 2011 -0700 @@ -1,3 +1,8 @@ +2010-03-17 Rik + + * scripts/sparse/svds.m: Fix bug #32818, nonconformant arguments + in svds. + 2010-03-17 Rik * io/fileread.m: Add seealso reference to sscanf. diff -r 3d6584617da0 -r c2e8c9d9e284 scripts/sparse/svds.m --- a/scripts/sparse/svds.m Thu Mar 17 21:41:15 2011 -0700 +++ b/scripts/sparse/svds.m Thu Mar 17 23:11:47 2011 -0700 @@ -173,10 +173,10 @@ if (nargout > 1) [V, s, flag] = eigs ([sparse(m,m), b; b', sparse(n,n)], b_k, b_sigma, b_opts); + s = diag (s); else s = eigs ([sparse(m,m), b; b', sparse(n,n)], b_k, b_sigma, b_opts); endif - s = diag (s); if (ischar (sigma)) norma = max (s); @@ -224,11 +224,11 @@ else if (max_a == 0) u = eye (m, k); - s = diag(s); + s = diag (s); v = eye (n, k); else u = root2 * V(1:m,ind); - s = diag(s); + s = diag (s); v = root2 * V(m+1:end,ind); endif @@ -273,4 +273,7 @@ %! assert(s2, s((idx+floor(k/2)):-1:(idx-floor(k/2))), 1e-10); %!test %! [u2,s2,v2,flag] = svds(zeros (10), k); -%! assert (isequal(u2, eye (10, k)) && isequal (s2, zeros(k)) && isequal (v2, eye(10, 7))) +%! assert (isequal(u2, eye (10, k)) && isequal (s2, zeros(k)) && isequal (v2, eye(10, 7))); +%!test +%! s = svds (speye (10)); +%! assert (s, ones (6, 1), 2*eps);