Mercurial > octave
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);