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