function varargout = setxor(varargin)
%SETXOR Set setxor.
%   C = setxor(A,B)    
%   [C,IA,IB] = setxor(A,B)    
%   [C,IA,IB] = setxor(A,B,'rows')    
%   [C,IA,IB] = setxor(A,B,'stable') 
%   [C,IA,IB] = setxor(A,B,'stable','rows') 
%   [C,IA,IB] = setxor(A,B,'sorted') 
%   [C,IA,IB] = setxor(A,B,'sorted','rows') 
%   
%   The 'legacy' flags is not supported.
%   64-bit integers are not supported.
%    
%   Examples:
%    
%      a = gpuArray([9 9 9 9 9 9 8 8 8 8 7 7 7 6 6 6 5 5 4 2 1])
%      b = gpuArray([1 1 1 3 3 3 3 3 4 4 4 4 4 10 10 10])
%      [c1,ia1,ib1] = setxor(a,b)
%      % returns
%      c1 = [2 3 5 6 7 8 9 10], ia1 = [20 17 14 11 7 1]', ib1 = [4 14]'
%      
%      [c2,ia2,ib2] = setxor(a,b,'stable')
%      % returns
%      c2 = [9 8 7 6 5 2 3 10], ia2 = [1 7 11 14 17 20]', ib2 = [4 14]'
%      
%      c = setxor(gpuArray([1 NaN 2 3]),gpuArray([3 4 NaN 1]))
%      % NaNs compare as not equal, so this returns
%      c = [2 4 NaN NaN]
%    See also setxor, gpuArray.


%   Copyright 2015 The MathWorks, Inc.

% try...catch prevents error being reported by internal
try
    [varargout{1:nargout}] = parallel.internal.flowthrough.setxor(varargin{:});
catch ME
    throw(ME);
end
