function OUT = ce_test_distr(pts,a,m,test,N)

% CE_TEST_DISTR.M samples ce_test.m a total of N times
         
% Written by: TONY E. SMITH, 12/28/99

% INPUTS: 
%      (i)  pts  = file of point locations (xi,yi), i=1..n
%     (ii)    a  = area of region
%    (iii)    m  = sample size (m <= n)
%     (iv)  test = indicator of test to be used
%                  0 = two-sided test for randomness
%                  1 = one-sided test for clustering
%                  2 = one-sided test for dispersion
%      (v)     N = number of sample tests.
%
% OUTPUTS: OUT = vector of Z-values for tests.
%
% SCREEN OUTPUT: (1) Normal fit of Histogram for OUT
%                (2) Mean of OUT
%                (3) P-value of mean (if normcdf present)
%
%


%Construct Nearest-Neighbor Distances

[n,junk] = size(pts);  %number of points

M = distance_mat(pts);

area = a;

mx = max(max(M));

M = M + mx*eye(n) ; %add to diagonal to avoid zero case

DD = min(M);


OUT = zeros(1,N);

for i=1:N

	%Take subsample
	
	r_list = randperm(n);
	
	list = r_list(1:m);
	
	D = DD(list);
	
	%Construct Clark-Evans Statistic
	
	lam = n/area; %based on full set of points 
	
	mu = 1/(2*sqrt(lam));
	
	var = (4 - pi)/(m*4*lam*pi); %based on sample
	
	sig = sqrt(var);
	
	Dbar = (1/m)*sum(D); 
	
	OUT(i) = (Dbar - mu)/sig;

end

% Compute Outputs for Screen


ZZ = mean(OUT);

if exist('normcdf') == 2
   
   if test == 0
      
      P = 2*normcdf(-abs(ZZ),0,1);
      
   elseif test == 1
      
      P = normcdf(ZZ,0,1);
      
   elseif test == 2
      
      P = 1 - normcdf(ZZ,0,1);
      
   else 
      
      error('input value for test is wrong') 
      
   end
   
end

   
%Make screen output  

if exist('normpdf')
    
    histfit_ts(OUT);
    
else

    hist_ts(OUT);
    
end

if test == 0
   
   disp(' '); 
   disp('RESULTS OF TEST FOR RANDOMNESS')
   disp(' '); 
   disp(['Mean Z-Value = ',num2str(ZZ)]);
   disp(' ');
   
   
   if exist('normcdf') == 2 
      
      disp(['P-Value of Mean = ',num2str(P)]); 
      disp(' ');
      
   end
   
elseif test == 1
   
   disp(' '); 
   disp('RESULTS OF TEST FOR CLUSTERING')
   disp(' '); 
   disp(['Mean Z-Value = ',num2str(ZZ)]);
   disp(' ');
   
   
   if exist('normcdf') == 2 
      
      disp(['P-Value of Mean = ',num2str(P)]); 
      disp(' ');
      
   end
   
      
else
   
   disp(' '); 
   disp('RESULTS OF TEST FOR UNIFORMITY')
   disp(' '); 
   disp(['Mean Z-Value = ',num2str(ZZ)]);
   disp(' ');
   
   
   if exist('normcdf') == 2 
      
      disp(['P-Value of Mean = ',num2str(P)]); 
      disp(' ');
      
   end
   
end

OUT = OUT';  %shift to column vector


