Mercurial > octave
annotate scripts/set/setdiff.m @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | 01de0045b2e3 |
children | 597f3ee61a48 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30330
diff
changeset
|
3 ## Copyright (C) 2000-2022 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
5178 | 7 ## |
5181 | 8 ## This file is part of Octave. |
5178 | 9 ## |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23573
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
5181 | 11 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23573
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22489
diff
changeset
|
13 ## (at your option) any later version. |
5181 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22489
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22489
diff
changeset
|
18 ## GNU General Public License for more details. |
5178 | 19 ## |
20 ## You should have received a copy of the GNU General Public License | |
7016 | 21 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23573
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
5178 | 25 |
26 ## -*- texinfo -*- | |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20437
diff
changeset
|
27 ## @deftypefn {} {@var{c} =} setdiff (@var{a}, @var{b}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20437
diff
changeset
|
28 ## @deftypefnx {} {@var{c} =} setdiff (@var{a}, @var{b}, "rows") |
27293
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
29 ## @deftypefnx {} {@var{c} =} setdiff (@dots{}, "sorted") |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
30 ## @deftypefnx {} {@var{c} =} setdiff (@dots{}, "stable") |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
31 ## @deftypefnx {} {@var{c} =} setdiff (@dots{}, "legacy") |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20437
diff
changeset
|
32 ## @deftypefnx {} {[@var{c}, @var{ia}] =} setdiff (@dots{}) |
27293
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
33 ## Return the unique elements in @var{a} that are not in @var{b}. |
5786 | 34 ## |
25694
1fa7459a8697
setdiff.m: Fix typo in documentation (bug #54393).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
35 ## If @var{a} is a row vector return a row vector; Otherwise, return a |
20160
03b9d17a2d95
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19974
diff
changeset
|
36 ## column vector. The inputs may also be cell arrays of strings. |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
37 ## |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19003
diff
changeset
|
38 ## If the optional input @qcode{"rows"} is given then return the rows in |
27293
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
39 ## @var{a} that are not in @var{b}. The inputs must be 2-D numeric matrices to |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
40 ## use this option. |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
41 ## |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
42 ## The optional argument @qcode{"sorted"}/@qcode{"stable"} controls the order |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
43 ## in which unique values appear in the output. The default is |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
44 ## @qcode{"sorted"} and values in the output are placed in ascending order. |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
45 ## The alternative @qcode{"stable"} preserves the order found in the input. |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
46 ## |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
47 ## If requested, return the index vector @var{ia} such that |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
48 ## @code{@var{c} = @var{a}(@var{ia})}. |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
49 ## |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
50 ## Programming Note: The input flag @qcode{"legacy"} changes the algorithm |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
51 ## to be compatible with @sc{matlab} releases prior to R2012b. |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
52 ## |
5642 | 53 ## @seealso{unique, union, intersect, setxor, ismember} |
5178 | 54 ## @end deftypefn |
55 | |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
56 function [c, ia] = setdiff (a, b, varargin) |
5786 | 57 |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
58 if (nargin < 2 || nargin > 4) |
6046 | 59 print_usage (); |
5786 | 60 endif |
5181 | 61 |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
62 [a, b] = validsetargs ("setdiff", a, b, varargin{:}); |
6385 | 63 |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
64 by_rows = any (strcmp ("rows", varargin)); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
65 optlegacy = any (strcmp ("legacy", varargin)); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
66 |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
67 if (optlegacy) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
68 isrowvec = ! iscolumn (a) || ! iscolumn (b); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
69 else |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
70 isrowvec = isrow (a); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
71 endif |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
72 |
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
73 if (by_rows) |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
74 if (nargout > 1) |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
75 [c, ia] = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
76 else |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
77 c = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
78 endif |
5786 | 79 if (! isempty (c) && ! isempty (b)) |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
80 ## Form A and B into combined set. |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
81 b = unique (b, varargin{:}); |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
82 [csort, idx] = sortrows ([c; b]); |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
83 ## Eliminate those elements of A that are the same as in B. |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
84 dups = find (all (csort(1:end-1,:) == csort(2:end,:), 2)); |
6386 | 85 c(idx(dups),:) = []; |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
86 if (nargout > 1) |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
87 ia(idx(dups),:) = []; |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
88 endif |
5786 | 89 endif |
90 else | |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
91 if (nargout > 1) |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
92 [c, ia] = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
93 else |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
94 c = unique (a, varargin{:}); |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
95 endif |
5786 | 96 if (! isempty (c) && ! isempty (b)) |
97 ## Form a and b into combined set. | |
98 b = unique (b); | |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
99 [csort, idx] = sort ([c(:); b(:)]); |
5786 | 100 ## Eliminate those elements of a that are the same as in b. |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
101 if (iscellstr (csort)) |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
102 dups = find (strcmp (csort(1:end-1), csort(2:end))); |
6385 | 103 else |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
104 dups = find (csort(1:end-1) == csort(2:end)); |
6385 | 105 endif |
6386 | 106 c(idx(dups)) = []; |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
107 |
18843
30d8501a857a
setdiff.m: Orient output (row/column) the same as Matlab (bug #42577).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
108 ## Reshape if necessary for Matlab compatibility. |
19974
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
109 if (isrowvec) |
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
110 c = c(:).'; |
72ccbd36e23c
Return a column vector by default for Matlab compatibility (bug #44425, bug #44453).
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
111 else |
19003
d00f6b09258f
Overhaul functions in scripts/set directory.
Rik <rik@octave.org>
parents:
18843
diff
changeset
|
112 c = c(:); |
5786 | 113 endif |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
114 |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
115 if (nargout > 1) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
116 ia(idx(dups)) = []; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
117 if (optlegacy && isrowvec) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
118 ia = ia(:).'; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
119 endif |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
120 endif |
5178 | 121 endif |
122 endif | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
123 |
5178 | 124 endfunction |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
125 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
126 |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
127 %!assert (setdiff (["bb";"zz";"bb";"zz"], ["bb";"cc";"bb"], "rows"), "zz") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
128 %!assert (setdiff (["b";"z";"b";"z"], ["b";"c";"b"], "rows"), "z") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
129 %!assert (setdiff (["b";"z";"b";"z"], ["b";"c";"b"]), "z") |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
130 %!assert (setdiff ([1, 1; 2, 2; 3, 3; 4, 4], [1, 1; 2, 2; 4, 4], "rows"), [3 3]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
131 %!assert (setdiff ([1; 2; 3; 4], [1; 2; 4], "rows"), 3) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
132 %!assert (setdiff ([1, 2; 3, 4], [1, 2; 3, 6], "rows"), [3, 4]) |
30330
01de0045b2e3
maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
133 %!assert (setdiff ({"one","two";"three","four"}, {"one","two";"three","six"}), |
01de0045b2e3
maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29358
diff
changeset
|
134 %! {"four"}) |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
135 |
27296
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
136 ## Test multi-dimensional input |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
137 %!test |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
138 %! a = rand (3,3,3); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
139 %! b = a(1); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
140 %! assert (setdiff (a, b), sort (a(2:end)')); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
141 |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
142 ## Test "rows" |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
143 %!test |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
144 %! a = [7 9 7; 0 0 0; 7 9 7; 5 5 5; 1 4 5]; |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
145 %! b = [0 0 0; 5 5 5]; |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
146 %! [c, ia] = setdiff (a, b, "rows"); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
147 %! assert (c, [1, 4 ,5; 7, 9 7]); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
148 %! assert (ia, [5; 1]); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
149 |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
150 %!test |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
151 %! a = [7 9 7; 0 0 0; 7 9 7; 5 5 5; 1 4 5]; |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
152 %! b = [0 0 0; 5 5 5]; |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
153 %! [c, ia] = setdiff (a, b, "rows", "stable"); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
154 %! assert (c, [7, 9 7; 1, 4 ,5]); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
155 %! assert (ia, [1; 5]); |
538468f901dd
Clean up BIST tests in set functions.
Rik <rik@octave.org>
parents:
27293
diff
changeset
|
156 |
27293
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
157 ## Test sorting order |
7920
e56bb65186f6
improve set functions for Matlab compatibility
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
158 %!test |
27293
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
159 %! a = [5, 1, 4, 1, 3]; |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
160 %! b = [1; 2; 4]; |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
161 %! [c, ia] = setdiff (a, b, "sorted"); |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
162 %! assert (c, [3, 5]); |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
163 %! assert (ia, [5; 1]); |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
164 |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
165 %!test |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
166 %! a = [5, 1, 4, 1, 3]; |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
167 %! b = [1; 2; 4]; |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
168 %! [c, ia] = setdiff (a, b, "stable"); |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
169 %! assert (c, [5, 3]); |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
170 %! assert (ia, [1; 5]); |
6525b3fe3cf9
setdiff.m: Implement "stable" sorting option.
Rik <rik@octave.org>
parents:
27237
diff
changeset
|
171 |
22489
93ea313301f9
test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
172 ## Test output orientation compatibility |
23573
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
173 %!assert <*42577> (setdiff ([1:5], 2), [1,3,4,5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
174 %!assert <*42577> (setdiff ([1:5]', 2), [1;3;4;5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
175 %!assert <*42577> (setdiff ([1:5], [2:3]), [1,4,5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
176 %!assert <*42577> (setdiff ([1:5], [2:3]'), [1,4,5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
177 %!assert <*42577> (setdiff ([1:5]', [2:3]), [1;4;5]) |
1b4f4ec53b4a
use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents:
23572
diff
changeset
|
178 %!assert <*42577> (setdiff ([1:5]', [2:3]'), [1;4;5]) |
18843
30d8501a857a
setdiff.m: Orient output (row/column) the same as Matlab (bug #42577).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
179 |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
180 ## Test "legacy" option |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
181 %!test |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
182 %! a = [3, 6, 2, 1, 5, 1, 1]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
183 %! b = [2, 4, 6]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
184 %! [c, ia] = setdiff (a, b); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
185 %! assert (c, [1, 3, 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
186 %! assert (ia, [4; 1; 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
187 %! [c, ia] = setdiff (a, b, "legacy"); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
188 %! assert (c, [1, 3, 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
189 %! assert (ia, [7, 1, 5]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
190 |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
191 ## "legacy" + "rows" compatibility |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
192 %!test |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
193 %! a = [7 9 7; 0 0 0; 7 9 7; 5 5 5; 1 4 5]; |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
194 %! b = [0 0 0; 5 5 5]; |
29190
7f11d59e3af8
Fix incorrect results for set functions with "legacy" option (bug #59708).
Rik <rik@octave.org>
parents:
27978
diff
changeset
|
195 %! [c, ia] = setdiff (a, b, "rows"); |
7f11d59e3af8
Fix incorrect results for set functions with "legacy" option (bug #59708).
Rik <rik@octave.org>
parents:
27978
diff
changeset
|
196 %! assert (c, [1, 4 ,5; 7, 9 7]); |
7f11d59e3af8
Fix incorrect results for set functions with "legacy" option (bug #59708).
Rik <rik@octave.org>
parents:
27978
diff
changeset
|
197 %! assert (ia, [5; 1]); |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
198 %! [c, ia] = setdiff (a, b, "rows", "legacy"); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
199 %! assert (c, [1, 4 ,5; 7, 9 7]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
200 %! assert (ia, [5; 3]); |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
201 |
27797
5dcdd5bd46e2
maint: remove trailing spaces from code.
Rik <rik@octave.org>
parents:
27296
diff
changeset
|
202 ## Output orientation with "legacy" option |
27237
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
203 %!assert (size (setdiff ([1:5], [2:3], "legacy")), [1, 3]) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
204 %!assert (size (setdiff ([1:5]', [2:3], "legacy")), [1, 3]) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
205 %!assert (size (setdiff ([1:5], [2:3]', "legacy")), [1, 3]) |
67e5e997a3bf
setdiff.m: Accept a "legacy" flag for Matlab compatibility.
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
206 %!assert (size (setdiff ([1:5]', [2:3]', "legacy")), [3, 1]) |