changeset 24334:d3d38a443df8

Add new warning ID "Octave:eigs:UnconvergedEigenvalues". * __eigs__.cc (F__eigs__): Change function call warning() to warning_with_id(). Use new ID "Octave:eigs:UnconvergedEigenvalues". * warning_ids.m: Add documentation describing warning. * eigs.m: Change BIST tests to disable this warning ID temporarily when running tests designed to produce unconverged eigenvalues.
author Rik <rik@octave.org>
date Wed, 29 Nov 2017 13:08:56 -0800
parents 0c1417a8d9d0
children 8edaf9c80779
files libinterp/dldfcn/__eigs__.cc scripts/help/warning_ids.m scripts/sparse/eigs.m
diffstat 3 files changed, 37 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/dldfcn/__eigs__.cc	Fri Nov 24 11:51:03 2017 +0100
+++ b/libinterp/dldfcn/__eigs__.cc	Wed Nov 29 13:08:56 2017 -0800
@@ -555,10 +555,12 @@
     }
 
   if (nconv <= 0)
-    warning ("eigs: None of the %d requested eigenvalues converged", k);
+    warning_with_id ("Octave:eigs:UnconvergedEigenvalues",
+                     "eigs: None of the %d requested eigenvalues converged", k);
   else if (nconv < k)
-    warning ("eigs: Only %d of the %d requested eigenvalues converged",
-             nconv, k);
+    warning_with_id ("Octave:eigs:UnconvergedEigenvalues",
+                     "eigs: Only %d of the %d requested eigenvalues converged",
+                     nconv, k);
 
   if (! fcn_name.empty ())
     {
--- a/scripts/help/warning_ids.m	Fri Nov 24 11:51:03 2017 +0100
+++ b/scripts/help/warning_ids.m	Wed Nov 29 13:08:56 2017 -0800
@@ -163,6 +163,13 @@
 ## warning is issued when Octave encounters a division by zero.
 ## By default, the @code{Octave:divide-by-zero} warning is enabled.
 ##
+## @item Octave:eigs:UnconvergedEigenvalues
+## If the @code{Octave:eigs:UnconvergedEigenvalues} warning is enabled then
+## the eigs function will issue a warning if the number of calculated
+## eigenvalues is less than the number of requested eigenvalues.
+## By default, the @code{Octave:eigs:UnconvergedEigenvalues} warning is
+## enabled.
+##
 ## @item Octave:fopen-file-in-path
 ## By default, the @code{Octave:fopen-file-in-path} warning is enabled.
 ##
--- a/scripts/sparse/eigs.m	Fri Nov 24 11:51:03 2017 +0100
+++ b/scripts/sparse/eigs.m	Wed Nov 29 13:08:56 2017 -0800
@@ -1334,17 +1334,17 @@
 %! A = kron (A, eye (10)) + kron (eye (10), A);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 3;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "lm", opts);
-%! assert (d(2:4), [NaN; NaN; NaN])
+%! assert (d(2:4), [NaN; NaN; NaN]);
 %!testif HAVE_ARPACK
 %! A = toeplitz ([-2, 1, zeros(1, 8)]);
 %! A = kron (A, eye (10)) + kron (eye (10), A);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 1;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "sm", opts);
-%! assert (d(4), NaN)
+%! assert (d(4), NaN);
 %!testif HAVE_ARPACK
 %! A = toeplitz ([-2, 1, zeros(1, 8)]);
 %! A = kron (A, eye (10)) + kron (eye (10), A);
@@ -1352,79 +1352,79 @@
 %! opts.v0 = (1:100)';
 %! opts.maxit = 3;
 %! opts.issym = true;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (Afun, 100, 4, "sm", opts);
-%! assert (d(2:4), [NaN; NaN; NaN])
+%! assert (d(2:4), [NaN; NaN; NaN]);
 %!testif HAVE_ARPACK
 %! A = toeplitz ([-2, 1, zeros(1, 8)]);
 %! A = kron (A, eye (10)) + kron (eye (10), A);
 %! A(1, 2) = 10;
 %! opts.v0 = (1:100)';
 %! opts.maxit = 5;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "lm", opts);
-%! assert (d(3:4), [NaN; NaN])
+%! assert (d(3:4), [NaN; NaN]);
 %!testif HAVE_ARPACK
 %! A = toeplitz ([0, 1, zeros(1, 8)], [0, -1, zeros(1, 8)]);
 %! A = kron (A, eye (10)) + kron (eye (10), A);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 5;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "lm", opts);
-%! assert (d(3:4), [NaN+1i*NaN; NaN+1i*NaN])
+%! assert (d(3:4), [NaN+1i*NaN; NaN+1i*NaN]);
 %!testif HAVE_ARPACK
 %! A = magic (100);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 1;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "lm", opts);
-%! assert (d(4), NaN)
+%! assert (d(4), NaN);
 %!testif HAVE_ARPACK
 %! A = toeplitz ([0, 1, zeros(1, 8)], [0, -1, zeros(1, 8)]);
 %! A(1, 1) = 1;
 %! A = kron (A, eye (10)) + kron (eye (10), A);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 1;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "sm", opts);
-%! assert (d(3:4), [NaN; NaN])
-%! assert (imag (d(3:4)), [0; 0])
+%! assert (d(3:4), [NaN; NaN]);
+%! assert (imag (d(3:4)), [0; 0]);
 %!testif HAVE_ARPACK
 %! A = magic (100) / 100 + eye (100);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 1;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "sm", opts);
-%! assert (d(3:4), [NaN+1i*NaN; NaN+1i*NaN])
+%! assert (d(3:4), [NaN+1i*NaN; NaN+1i*NaN]);
 %!testif HAVE_ARPACK
 %! A = toeplitz ([0, 1, zeros(1, 8)], [0, -1, zeros(1, 8)]);
 %! A = kron (A, eye (10)) + kron (eye (10), A);
 %! Afun = @(x) A * x;
 %! opts.v0 = (1:100)';
 %! opts.maxit = 5;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (Afun, 100, 4, "lm", opts);
-%! assert (d(3:4), [NaN+1i*NaN; NaN+1i*NaN])
+%! assert (d(3:4), [NaN+1i*NaN; NaN+1i*NaN]);
 %!testif HAVE_ARPACK
 %! A = 1i * magic (100);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 1;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "lm", opts);
-%! assert (d(4), NaN+1i*NaN)
+%! assert (d(4), NaN+1i*NaN);
 %!testif HAVE_ARPACK
 %! A = 1i * magic (100) / 100 + eye (100);
 %! opts.v0 = (1:100)';
 %! opts.maxit = 1;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (A, 4, "sm", opts);
-%! assert (d(2:4), [NaN+1i*NaN; NaN+1i*NaN; NaN+1i*NaN])
+%! assert (d(2:4), [NaN+1i*NaN; NaN+1i*NaN; NaN+1i*NaN]);
 %!testif HAVE_ARPACK
 %! A = 1i * magic (100);
 %! Afun = @(x) A * x;
 %! opts.v0 = (1:100)';
 %! opts.maxit = 1;
 %! opts.isreal = false;
-%! warning ("off", "all")
+%! warning ("off", "Octave:eigs:UnconvergedEigenvalues", "local");
 %! d = eigs (Afun, 100, 4, "lm", opts);
-%! assert (d(4), NaN+1i*NaN)
+%! assert (d(4), NaN+1i*NaN);