Mercurial > jwe > octave
changeset 25269:cac96fd5310d
factor.m: Emit an error if input is negative (bug #53425).
* factor.m: Add input validation that input q >= 1. Change error message to note that input must be non-negative. Add BIST test.
author | Dildar Sk <dildarsk101010@gmail.com> |
---|---|
date | Thu, 22 Mar 2018 23:55:46 -0400 |
parents | 592a4258b237 |
children | 617fe022e965 |
files | scripts/specfun/factor.m |
diffstat | 1 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/specfun/factor.m Mon Apr 16 14:59:43 2018 -0700 +++ b/scripts/specfun/factor.m Thu Mar 22 23:55:46 2018 -0400 @@ -47,8 +47,8 @@ print_usage (); endif - if (! isreal (q) || ! isscalar (q) || q != fix (q)) - error ("factor: Q must be a real integer"); + if (! isscalar (q) || ! isreal (q) || q < 0 || q != fix (q)) + error ("factor: Q must be a real non-negative integer"); endif ## Special case of no primes less than sqrt(q). @@ -87,7 +87,7 @@ warning ("factor: Q too large. Answer is unreliable"); endif - ## Determine muliplicity. + ## Determine multiplicity. if (nargout > 1) idx = find ([0, pf] != [pf, 0]); pf = pf(idx(1:length (idx)-1)); @@ -111,6 +111,7 @@ ## Test input validation %!error factor () %!error factor (1,2) -%!error <Q must be a real integer> factor (6i) -%!error <Q must be a real integer> factor ([1,2]) -%!error <Q must be a real integer> factor (1.5) +%!error <Q must be a real non-negative integer> factor (6i) +%!error <Q must be a real non-negative integer> factor ([1,2]) +%!error <Q must be a real non-negative integer> factor (1.5) +%!error <Q must be a real non-negative integer> factor (-20)