%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% err = entropyGrad(npd,estType)
%   Compute gradient of an entropy estimate for the npde
%
%   entType is one of:
%       ISE     :  integrated squared error from uniform estimate
%       RS,LLN  :  law of large numbers resubstitution estimate
%       KL,dist :  nearest-neighbor distance based estimate
%
% see also: kde, miGrad, klGrad, adjustPoints
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Copyright (C) 2003 Alexander Ihler; distributable under GPL -- see README.txt

function err=entropyGrad(npd,entType)
  if (nargin < 2), entType = 'ISE'; end;
  switch (upper(entType))
      case 'ISE', err = entropyGradISE(npd);
      case {'RS','LLN'}, [err1,err2]=llGrad(npd,npd,0,1e-3,1e-2); 
                         err = -(err1+err2); 
                         % err = entropyGradRS(npd);
      case {'KL','DIST'}, err = entropyGradDist(npd);
  end;