Mercurial > octave-nkf
changeset 10040:f322d72d482c
deprecate complement
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 29 Dec 2009 21:42:41 +0100 |
parents | 1e306aa51d6c |
children | 0240c7b34f54 |
files | scripts/ChangeLog scripts/deprecated/complement.m scripts/set/complement.m |
diffstat | 3 files changed, 83 insertions(+), 70 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/ChangeLog Mon Dec 28 10:11:20 2009 -0600 +++ b/scripts/ChangeLog Tue Dec 29 21:42:41 2009 +0100 @@ -1,3 +1,7 @@ +2009-12-29 Jaroslav Hajek <highegg@gmail.com> + + * set/complement.m: Deprecate. + 2009-12-28 Jaroslav Hajek <highegg@gmail.com> * strings/strcat.m: Further simplify.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/deprecated/complement.m Tue Dec 29 21:42:41 2009 +0100 @@ -0,0 +1,79 @@ +## Copyright (C) 1994, 1996, 1997, 1999, 2000, 2004, 2005, 2006, 2007, +## 2008, 2009 John W. Eaton +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} complement (@var{x}, @var{y}) +## Return the elements of set @var{y} that are not in set @var{x}. For +## example, +## +## @example +## @group +## complement ([ 1, 2, 3 ], [ 2, 3, 5 ]) +## @result{} 5 +## @end group +## @end example +## @seealso{union, intersect, unique} +## @end deftypefn + +## Author: jwe + +## Deprecated in version 3.2 + +function y = complement (a, b) + + persistent warned = false; + if (! warned) + warned = true; + warning ("Octave:deprecated-function", + "complement is obsolete and will be removed from a future version of Octave, please use setdiff instead"); + endif + + if (nargin != 2) + print_usage (); + endif + + if (isempty (a)) + y = unique (b); + elseif (isempty (b)) + y = []; + else + a = unique (a); + b = unique (b); + yindex = 1; + y = zeros (1, length (b)); + for index = 1:length (b) + if (all (a != b (index))) + y(yindex++) = b(index); + endif + endfor + y = y(1:(yindex-1)); + endif + +endfunction + +%!assert(all (all (complement ([1, 2, 3], [3; 4; 5; 6]) == [4, 5, 6]))); + +%!assert(all (all (complement ([1, 2, 3], [3, 4, 5, 6]) == [4, 5, 6]))); + +%!assert(isempty (complement ([1, 2, 3], [3, 2, 1]))); + +%!error complement (1); + +%!error complement (1, 2, 3); +
--- a/scripts/set/complement.m Mon Dec 28 10:11:20 2009 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -## Copyright (C) 1994, 1996, 1997, 1999, 2000, 2004, 2005, 2006, 2007, -## 2008, 2009 John W. Eaton -## -## This file is part of Octave. -## -## Octave is free software; you can redistribute it and/or modify it -## under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 3 of the License, or (at -## your option) any later version. -## -## Octave is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with Octave; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} {} complement (@var{x}, @var{y}) -## Return the elements of set @var{y} that are not in set @var{x}. For -## example, -## -## @example -## @group -## complement ([ 1, 2, 3 ], [ 2, 3, 5 ]) -## @result{} 5 -## @end group -## @end example -## @seealso{union, intersect, unique} -## @end deftypefn - -## Author: jwe - -function y = complement (a, b) - - if (nargin != 2) - print_usage (); - endif - - if (isempty (a)) - y = unique (b); - elseif (isempty (b)) - y = []; - else - a = unique (a); - b = unique (b); - yindex = 1; - y = zeros (1, length (b)); - for index = 1:length (b) - if (all (a != b (index))) - y(yindex++) = b(index); - endif - endfor - y = y(1:(yindex-1)); - endif - -endfunction - -%!assert(all (all (complement ([1, 2, 3], [3; 4; 5; 6]) == [4, 5, 6]))); - -%!assert(all (all (complement ([1, 2, 3], [3, 4, 5, 6]) == [4, 5, 6]))); - -%!assert(isempty (complement ([1, 2, 3], [3, 2, 1]))); - -%!error complement (1); - -%!error complement (1, 2, 3); -