comparison scripts/specfun/primes.m @ 25232:8a92b651838b

primes.m: Improve input validation (bug #53472). * primes.m: Accept only a numeric scalar for input N. Add BIST test.
author Rik <rik@octave.org>
date Thu, 12 Apr 2018 13:19:25 -0700
parents 6652d3823428
children 00f796120a6d
comparison
equal deleted inserted replaced
25230:b68abed2db20 25232:8a92b651838b
46 46
47 if (nargin != 1) 47 if (nargin != 1)
48 print_usage (); 48 print_usage ();
49 endif 49 endif
50 50
51 if (! isscalar (n)) 51 if (! (isnumeric (n) && isscalar (n)))
52 error ("primes: N must be a scalar"); 52 error ("primes: N must be a numeric scalar");
53 endif 53 endif
54 54
55 if (n > 100e3) 55 if (n > 100e3)
56 ## Optimization: 1/6 less memory, and much faster (asymptotically) 56 ## Optimization: 1/6 less memory, and much faster (asymptotically)
57 ## 100K happens to be the cross-over point for Paul's machine; 57 ## 100K happens to be the cross-over point for Paul's machine;
105 %!assert (class (primes (single (10))), "single") 105 %!assert (class (primes (single (10))), "single")
106 %!assert (class (primes (uint8 (10))), "uint8") 106 %!assert (class (primes (uint8 (10))), "uint8")
107 107
108 %!error primes () 108 %!error primes ()
109 %!error primes (1, 2) 109 %!error primes (1, 2)
110 %!error <N must be a scalar> primes (ones (2,2)) 110 %!error <N must be a numeric scalar> primes ("1")
111 %!error <N must be a numeric scalar> primes (ones (2,2))