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)