function varargout = setdiff(varargin)
%SETDIFF Set difference.
%   C = setdiff(A,B)    
%   C = setdiff(A,B,'rows')    
%   [C,IA] = setdiff(A,B)    
%   [C,IA] = setdiff(A,B,'rows')    
%   [C,IA] = setdiff(A,B,'stable') 
%   [C,IA] = setdiff(A,B,'rows','stable') 
%   [C,IA] = setdiff(A,B,'sorted') 
%   [C,IA] = setdiff(A,B,'rows','sorted') 
%   
%   The 'legacy' flag 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] = setdiff(a,b)
%      % returns
%      c1 = [2 5 6 7 8 9]
%      ia1 = [20 17 14 11 7 1]'
%      
%      [c2,ia2] = setdiff(a,b,'stable')
%      % returns
%      c2 = [9 8 7 6 5 2]
%      ia2 = [1 7 11 14 17 20]'
%      
%      c = setdiff(gpuArray([1 NaN 2 3]),gpuArray([3 4 NaN 1]))
%      % NaNs compare as not equal, so this returns
%      c = [2 NaN]
%    See also setdiff, gpuArray.


%   Copyright 2015 The MathWorks, Inc.

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