Mercurial > octave
changeset 28073:a3b40e48c069 stable
bandwidth: allow nargout == 1 when TYPE is not specified
* bandwidth: Don't check nargout when validating argument list, just
require 1 or two arguments. Update tests.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 17 Feb 2020 14:16:58 -0500 |
parents | 47238792de58 |
children | 090964145c2f 5e79401cbc35 |
files | scripts/linear-algebra/bandwidth.m |
diffstat | 1 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/linear-algebra/bandwidth.m Fri Feb 14 14:34:48 2020 -0500 +++ b/scripts/linear-algebra/bandwidth.m Mon Feb 17 14:16:58 2020 -0500 @@ -40,7 +40,7 @@ function [lower, upper] = bandwidth (A, type) - if (! ((nargin == 1 && nargout == 2) || (nargin == 2 && nargout <= 1))) + if (nargin < 1 || nargin > 2) print_usage (); endif @@ -55,17 +55,17 @@ if (isempty (i)) lower = upper = 0; else - lower = max (i - j); - upper = max (j - i); + lower = max (0, max (i - j)); + upper = max (0, max (j - i)); endif else [i, j] = find (A); if (isempty (i)) lower = 0; elseif (strcmp (type, "lower")) - lower = max (i - j); + lower = max (0, max (i - j)); else - lower = max (j - i); + lower = max (0, max (j - i)); endif endif @@ -74,39 +74,42 @@ %!test %! [a,b] = bandwidth (speye (100)); -%! assert ([a,b] == [0,0]); +%! assert ([a,b], [0,0]); %! assert (bandwidth (speye (100), "upper"), 0); %! assert (bandwidth (speye (100), "lower"), 0); %!test %! A = [2 3 0 0 0; 1 2 3 0 0; 0 1 2 3 0; 0 0 1 2 3; 0 0 0 1 2]; %! [a,b] = bandwidth (A); -%! assert ([a,b] == [1,1]); +%! assert ([a,b], [1,1]); %! assert (bandwidth (A, "lower"), 1); %! assert (bandwidth (A, "upper"), 1); %!assert (bandwidth ([], "lower"), 0) %!assert (bandwidth ([], "upper"), 0) +%!assert (bandwidth ([]), 0) %!assert (bandwidth (zeros (3,3), "lower"), 0) %!assert (bandwidth (zeros (3,3), "upper"), 0) +%!assert (bandwidth (zeros (3,3)), 0) %!assert (bandwidth (ones (5,5), "lower"), 4) %!assert (bandwidth (ones (5,5), "upper"), 4) +%!assert (bandwidth (ones (5,5)), 4) + +%!assert (bandwidth ([0,1,2,0]), 0) %!test %! [a,b] = bandwidth ([]); -%! assert ([a,b] == [0,0]); +%! assert ([a,b], [0,0]); %!test %! [a,b] = bandwidth (zeros (3,3)); -%! assert ([a,b] == [0,0]); +%! assert ([a,b], [0,0]); %!test %! [a,b] = bandwidth (ones (5,5)); -%! assert ([a,b] == [4,4]); +%! assert ([a,b], [4,4]); ## Test input validation %!error bandwidth () %!error bandwidth (1,2,3) -%!error [a,b,c] = bandwidth (ones (2)) -%!error [a,b] = bandwidth (ones (2), "upper") %!error <A must be a 2-D numeric or logical> bandwidth ("string", "lower") %!error <A must be a 2-D numeric or logical> bandwidth (ones (3,3,3), "lower") %!error <TYPE must be "lower" or "upper"> bandwidth (ones (2), "uper")