Mercurial > hg > octave-nkf
annotate scripts/specfun/isprime.m @ 19238:89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
There's no reason why we can't check for prime numbers in the Gaussian
integers. Both the lcm and gcd functions already use the Gaussian
integers, so primality testing can also happen in that domain.
* isprime.m: Modify documentation and add new tests. (isprime): Call
isgaussian prime for complex inputs. Relax the check on input
arguments, and corresponding error message. (isgaussianprime): New
function.
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Sat, 23 Aug 2014 17:53:48 -0400 |
parents | 920a400929ca |
children | 2f117c4b5cb0 |
rev | line source |
---|---|
17744
d63878346099
maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents:
14363
diff
changeset
|
1 ## Copyright (C) 2000-2013 Paul Kienzle |
10664
faff5367cc05
second isprime rewrite
Jaroslav Hajek <highegg@gmail.com>
parents:
10657
diff
changeset
|
2 ## Copyright (C) 2010 VZLU Prague |
5827 | 3 ## |
4 ## This file is part of Octave. | |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
7016 | 8 ## the Free Software Foundation; either version 3 of the License, or (at |
9 ## your option) any later version. | |
5827 | 10 ## |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
15 ## | |
16 ## You should have received a copy of the GNU General Public License | |
7016 | 17 ## along with Octave; see the file COPYING. If not, see |
18 ## <http://www.gnu.org/licenses/>. | |
5827 | 19 |
20 ## -*- texinfo -*- | |
11431
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
21 ## @deftypefn {Function File} {} isprime (@var{x}) |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
22 ## Return a logical array which is true where the elements of @var{x} are |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
23 ## prime numbers and false where they are not. |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
24 ## |
19233
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
25 ## @code{isprime} is appropriate if the maximum value in @var{x} is not too |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
26 ## large (< 1e15). For larger values special purpose factorization code |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
27 ## should be used. |
5827 | 28 ## |
11431
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
29 ## @example |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
30 ## @group |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
31 ## isprime (1:6) |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
32 ## @result{} [0, 1, 1, 0, 1, 0] |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
33 ## @end group |
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10664
diff
changeset
|
34 ## @end example |
19238
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
35 ## |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
36 ## If @code{class (@var{x})} is complex, then primality will be tested |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
37 ## in the domain of Gaussian integers. This means that some real prime |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
38 ## numbers will fail the primality test in this case. For example, 5 = |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
39 ## (1+2i)*(1-2i) and 2 = i*(1-i)^2. |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
40 ## |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
41 ## @example |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
42 ## @group |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
43 ## isprime ([i, 2, 3, 5]) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
44 ## @result{} [0, 0, 1, 0] |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
45 ## @end group |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
46 ## @end example |
5827 | 47 ## @seealso{primes, factor, gcd, lcm} |
48 ## @end deftypefn | |
49 | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11431
diff
changeset
|
50 function t = isprime (x) |
7125 | 51 |
19233
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
52 if (nargin != 1) |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
53 print_usage (); |
19238
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
54 elseif (any (fix (x) != x)) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
55 error ("isprime: X contains non-integer entries"); |
19233
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
56 endif |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
57 |
19237
920a400929ca
* isprime.m: Return an empty array for empty input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19233
diff
changeset
|
58 if (isempty (x)) |
920a400929ca
* isprime.m: Return an empty array for empty input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19233
diff
changeset
|
59 t = x; |
920a400929ca
* isprime.m: Return an empty array for empty input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19233
diff
changeset
|
60 return; |
920a400929ca
* isprime.m: Return an empty array for empty input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19233
diff
changeset
|
61 endif |
920a400929ca
* isprime.m: Return an empty array for empty input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19233
diff
changeset
|
62 |
19238
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
63 if (iscomplex (x)) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
64 t = isgaussianprime (x); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
65 return; |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
66 endif |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
67 |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
68 ## Handle negative entries |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
69 x = abs (x); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
70 |
19233
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
71 maxn = max (x(:)); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
72 ## generate prime table of suitable length. |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
73 maxp = min (maxn, max (sqrt (maxn), 1e7)); # FIXME: threshold not optimized. |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
74 pr = primes (maxp); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
75 ## quick search for table matches. |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
76 t = lookup (pr, x, "b"); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
77 ## take the rest. |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
78 m = x(x > maxp); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
79 if (! isempty (m)) |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
80 ## there are still possible primes. filter them out by division. |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
81 if (maxn <= intmax ("uint32")) |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
82 m = uint32 (m); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
83 elseif (maxn <= intmax ("uint64")) |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
84 m = uint64 (m); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
85 else |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
86 warning ("isprime: X contains integers too large to be tested"); |
10664
faff5367cc05
second isprime rewrite
Jaroslav Hajek <highegg@gmail.com>
parents:
10657
diff
changeset
|
87 endif |
19233
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
88 pr = cast (pr(pr <= sqrt (maxn)), class (m)); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
89 for p = pr |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
90 m = m(rem (m, p) != 0); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
91 if (length (m) < length (pr) / 10) |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
92 break; |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
93 endif |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
94 endfor |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
95 pr = pr(pr > p); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
96 mm = arrayfun (@(x) all (rem (x, pr)), m); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
97 m = m(mm); |
10664
faff5367cc05
second isprime rewrite
Jaroslav Hajek <highegg@gmail.com>
parents:
10657
diff
changeset
|
98 if (! isempty (m)) |
19233
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
99 m = cast (sort (m), class (x)); |
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
100 t |= lookup (m, x, "b"); |
10664
faff5367cc05
second isprime rewrite
Jaroslav Hajek <highegg@gmail.com>
parents:
10657
diff
changeset
|
101 endif |
7125 | 102 endif |
103 | |
5827 | 104 endfunction |
9984
d1cc2e0ddf55
isprime: produce logical result
John W. Eaton <jwe@octave.org>
parents:
7125
diff
changeset
|
105 |
19238
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
106 function t = isgaussianprime (z) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
107 ## Assumed prime unless proven otherwise |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
108 t = true (size (z)); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
109 |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
110 x = real (z); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
111 y = imag (z); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
112 |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
113 ## If purely real or purely imaginary, ordinary prime test for |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
114 ## that complex part if that part is 3 mod 4. |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
115 xidx = y==0 & mod (x, 4) == 3; |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
116 yidx = x==0 & mod (y, 4) == 3; |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
117 |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
118 t(xidx) &= isprime (x(xidx)); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
119 t(yidx) &= isprime (y(yidx)); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
120 |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
121 ## Otherwise, prime if x^2 + y^2 is prime and NOT 3 mod 4. |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
122 zabs = x.^2 + y.^2; |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
123 zidx = mod (zabs, 4) != 3 & !xidx & !yidx; |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
124 |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
125 t(zidx) &= isprime (zabs (zidx)); |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
126 endfunction |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
127 |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
128 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11431
diff
changeset
|
129 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
130 %!assert (isprime (3), true) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
131 %!assert (isprime (4), false) |
19238
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
132 %!assert (isprime (5i), false) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
133 %!assert (isprime (7i), true) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
134 %!assert (isprime ([1+2i, (2+3i)*(-1+2i)]), [true, false]) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
135 %!assert (isprime (-2), true) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
136 %!assert (isprime (complex (-2)), false) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
137 %!assert (isprime (2i), false) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
138 %!assert (isprime ([i, 2, 3, 5]), [false, false, true, false]) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
139 %!assert (isprime (0), false) |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
140 %!assert (isprime (magic (3)), logical ([0, 0, 0; 1, 1, 1; 0, 0, 1])) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
141 |
19233
0976f9fccbbd
isprime.m: Verify that input is a real number (bug #43041)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
142 %% Test input validation |
9984
d1cc2e0ddf55
isprime: produce logical result
John W. Eaton <jwe@octave.org>
parents:
7125
diff
changeset
|
143 %!error isprime () |
d1cc2e0ddf55
isprime: produce logical result
John W. Eaton <jwe@octave.org>
parents:
7125
diff
changeset
|
144 %!error isprime (1, 2) |
19238
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
145 %!error <X contains non-integer entries> isprime (0.5i) |
89e275a4f6f6
Allow isprime to handle complex numbers (bug #43041)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
19237
diff
changeset
|
146 %!error <X contains non-integer entries> isprime (0.5) |