Mercurial > octave
changeset 29098:64528a919674
eigs.m: reenable output and handle some tivial cases (bug #59488)
* eigs.m: Output for nargout == 0 was accedentially disabled by 00baf82bf56e.
Handle trivial case, if matrix A is smaller than default k = 6. New tests
for trivial input cases.
author | Kai T. Ohlhus <k.ohlhus@gmail.com> |
---|---|
date | Thu, 26 Nov 2020 15:22:37 +0900 |
parents | 00baf82bf56e |
children | 960099d8a691 |
files | scripts/sparse/eigs.m |
diffstat | 1 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/sparse/eigs.m Wed Nov 25 14:17:20 2020 -0800 +++ b/scripts/sparse/eigs.m Thu Nov 26 15:22:37 2020 +0900 @@ -239,6 +239,7 @@ if (isnumeric (varargin{1}) && issquare (varargin{1})) A = varargin{1}; have_A = true; + k = min (k, rows (A)); # reduce default k if necessary if (nargin > 1) if (! isnumeric (varargin{2})) error ("eigs: second argument must be numeric"); @@ -329,7 +330,7 @@ V = diag (ones ([k,1]), rows (A), k); varargout = { V, diag(zeros (k,1)) }; - case 1 + case {0, 1} varargout = { zeros(k,1) }; endswitch else @@ -446,6 +447,18 @@ endfunction +### TRIVIAL TESTS ### + +%!test +%! for i = 1:20 +%! assert (eigs (i, 1), i, 1e-11); +%! assert (eigs (zeros (i), 1), 0, 1e-11); +%! assert (eigs (ones (i), 1), i, 1e-11); +%! assert (eigs (sparse (i), 1), i, 1e-11); +%! assert (eigs (sparse (i, i), 1), 0, 1e-11); +%! assert (eigs (sparse (ones (i)), 1), i, 1e-11); +%! endfor + ### SPARSE MATRIX TESTS ### ## Real positive definite tests, n must be even