changeset 24490:e8d0573279b2

maint: move xor.m from miscellaneous to general directory. * scripts/general/xor.m: Moved from miscellaneous/ dir. * scripts/general/module.mk, scripts/miscellaneous/module.mk: Update build system.
author Rik <rik@octave.org>
date Thu, 28 Dec 2017 15:56:09 -0800
parents 6ea279bbe94a
children d8fb16ab0992
files scripts/general/module.mk scripts/general/xor.m scripts/miscellaneous/module.mk scripts/miscellaneous/xor.m
diffstat 4 files changed, 102 insertions(+), 102 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/general/module.mk	Thu Dec 28 15:25:48 2017 -0800
+++ b/scripts/general/module.mk	Thu Dec 28 15:56:09 2017 -0800
@@ -85,7 +85,8 @@
   %reldir%/subsindex.m \
   %reldir%/trapz.m \
   %reldir%/triplequad.m \
-  %reldir%/validateattributes.m
+  %reldir%/validateattributes.m \
+  %reldir%/xor.m
 
 %canon_reldir%dir = $(fcnfiledir)/general
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/general/xor.m	Thu Dec 28 15:56:09 2017 -0800
@@ -0,0 +1,100 @@
+## Copyright (C) 1995-2017 Kurt Hornik
+##
+## 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  {} {@var{z} =} xor (@var{x}, @var{y})
+## @deftypefnx {} {@var{z} =} xor (@var{x1}, @var{x2}, @dots{})
+## Return the @dfn{exclusive or} of @var{x} and @var{y}.
+##
+## For boolean expressions @var{x} and @var{y},
+## @code{xor (@var{x}, @var{y})} is true if and only if one of @var{x} or
+## @var{y} is true.  Otherwise, if @var{x} and @var{y} are both true or both
+## false, @code{xor} returns false.
+##
+## The truth table for the xor operation is
+##
+## @multitable @columnfractions 0.44 .03 .05 .03 0.44
+## @item @tab @var{x} @tab @var{y} @tab @var{z} @tab
+## @item @tab - @tab - @tab - @tab
+## @item @tab 0 @tab 0 @tab 0 @tab
+## @item @tab 1 @tab 0 @tab 1 @tab
+## @item @tab 0 @tab 1 @tab 1 @tab
+## @item @tab 1 @tab 1 @tab 0 @tab
+## @end multitable
+##
+## If more than two arguments are given the xor operation is applied
+## cumulatively from left to right:
+##
+## @example
+## (@dots{}((x1 XOR x2) XOR x3) XOR @dots{})
+## @end example
+##
+## @seealso{and, or, not}
+## @end deftypefn
+
+## Author: KH <Kurt.Hornik@wu-wien.ac.at>
+## Created: 16 September 1994
+## Adapted-By: jwe
+
+function z = xor (x, y, varargin)
+
+  if (nargin < 2)
+    print_usage ();
+  endif
+
+  z = __xor__ (x, y);
+
+  ## Slow expansion to multiple arguments.
+  ## Probably okay number of elements will be small.
+  if (! isempty (varargin))
+    for i = 1:numel (varargin)
+      z = __xor__ (z, varargin{i});
+    endfor
+  endif
+
+endfunction
+
+function z = __xor__ (x, y)
+
+  if (isscalar (x) || isscalar (y) || size_equal (x, y))
+    ## Typecast to logicals is necessary for other numeric types.
+    z = logical (x) != logical (y);
+  else
+    try
+      z = bsxfun (@xor, x, y);
+    catch
+      error ("xor: X and Y must be of compatible size or scalars");
+    end_try_catch
+  endif
+
+endfunction
+
+
+%!assert (xor ([1, 1, 0, 0], [0, 1, 0, 1]), logical ([1, 0, 0, 1]))
+%!assert (xor ([i, i, 0, 0], [1, 0, 1, 0]), logical ([0, 1, 1, 0]))
+
+%!assert (xor (eye (2), fliplr (eye (2))), logical (ones (2)))
+%!assert (xor (speye (2), fliplr (speye (2))), sparse (logical (ones (2))))
+
+## Test XOR reduction
+%!assert (xor ([1 0], [1 1], [0 0]), logical ([0 1]))
+
+## Test input validation
+%!error xor ()
+%!error xor (1)
+%!error <X and Y must be of compatible size> xor (ones (3,2), ones (2,3))
--- a/scripts/miscellaneous/module.mk	Thu Dec 28 15:25:48 2017 -0800
+++ b/scripts/miscellaneous/module.mk	Thu Dec 28 15:56:09 2017 -0800
@@ -66,7 +66,6 @@
   %reldir%/ver.m \
   %reldir%/version.m \
   %reldir%/what.m \
-  %reldir%/xor.m \
   %reldir%/zip.m
 
 %canon_reldir%dir = $(fcnfiledir)/miscellaneous
--- a/scripts/miscellaneous/xor.m	Thu Dec 28 15:25:48 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-## Copyright (C) 1995-2017 Kurt Hornik
-##
-## 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  {} {@var{z} =} xor (@var{x}, @var{y})
-## @deftypefnx {} {@var{z} =} xor (@var{x1}, @var{x2}, @dots{})
-## Return the @dfn{exclusive or} of @var{x} and @var{y}.
-##
-## For boolean expressions @var{x} and @var{y},
-## @code{xor (@var{x}, @var{y})} is true if and only if one of @var{x} or
-## @var{y} is true.  Otherwise, if @var{x} and @var{y} are both true or both
-## false, @code{xor} returns false.
-##
-## The truth table for the xor operation is
-##
-## @multitable @columnfractions 0.44 .03 .05 .03 0.44
-## @item @tab @var{x} @tab @var{y} @tab @var{z} @tab
-## @item @tab - @tab - @tab - @tab
-## @item @tab 0 @tab 0 @tab 0 @tab
-## @item @tab 1 @tab 0 @tab 1 @tab
-## @item @tab 0 @tab 1 @tab 1 @tab
-## @item @tab 1 @tab 1 @tab 0 @tab
-## @end multitable
-##
-## If more than two arguments are given the xor operation is applied
-## cumulatively from left to right:
-##
-## @example
-## (@dots{}((x1 XOR x2) XOR x3) XOR @dots{})
-## @end example
-##
-## @seealso{and, or, not}
-## @end deftypefn
-
-## Author: KH <Kurt.Hornik@wu-wien.ac.at>
-## Created: 16 September 1994
-## Adapted-By: jwe
-
-function z = xor (x, y, varargin)
-
-  if (nargin < 2)
-    print_usage ();
-  endif
-
-  z = __xor__ (x, y);
-
-  ## Slow expansion to multiple arguments.
-  ## Probably okay number of elements will be small.
-  if (! isempty (varargin))
-    for i = 1:numel (varargin)
-      z = __xor__ (z, varargin{i});
-    endfor
-  endif
-
-endfunction
-
-function z = __xor__ (x, y)
-
-  if (isscalar (x) || isscalar (y) || size_equal (x, y))
-    ## Typecast to logicals is necessary for other numeric types.
-    z = logical (x) != logical (y);
-  else
-    try
-      z = bsxfun (@xor, x, y);
-    catch
-      error ("xor: X and Y must be of compatible size or scalars");
-    end_try_catch
-  endif
-
-endfunction
-
-
-%!assert (xor ([1, 1, 0, 0], [0, 1, 0, 1]), logical ([1, 0, 0, 1]))
-%!assert (xor ([i, i, 0, 0], [1, 0, 1, 0]), logical ([0, 1, 1, 0]))
-
-%!assert (xor (eye (2), fliplr (eye (2))), logical (ones (2)))
-%!assert (xor (speye (2), fliplr (speye (2))), sparse (logical (ones (2))))
-
-## Test XOR reduction
-%!assert (xor ([1 0], [1 1], [0 0]), logical ([0 1]))
-
-## Test input validation
-%!error xor ()
-%!error xor (1)
-%!error <X and Y must be of compatible size> xor (ones (3,2), ones (2,3))