function [ a, unique_num] = r8col_sorted_tol_unique ( m, n, a, tol )

%*****************************************************************************80
%
%% R8COL_SORTED_TOL_UNIQUE keeps tolerably unique elements in an R8COL.
%
%  Discussion:
%
%    An R8COL is an M by N array of R8's, regarded as an array of N columns,
%    each of length M.
%
%  Licensing:
%
%    This code is distributed under the GNU LGPL license.
%
%  Modified:
%
%    16 July 2010
%
%  Author:
%
%    John Burkardt
%
%  Parameters:
%
%    Input, integer M, N, the number of rows and columns.
%
%    Input, real A(M,N), the sorted array of N columns of M-vectors.
%
%    Input, real TOL, a tolerance for equality.
%
%    Output, real A(M,UNIQUE_NUM), a sorted array of UNIQUE_NUM columns of M-vectors.
%
%    Output, integer UNIQUE_NUM, the number of unique columns.
%
  if ( n <= 0 )
    unique_num = 0;
    return
  end

  unique_num = 1;
  
  for i = 2 : n

    unique = 1;

    for j = 1 : unique_num
      if ( max ( abs ( a(1:m,j) - a(1:m,i) ) ) <= tol )
        unique = 0;
        break
      end
    end

    if ( unique )
      unique_num = unique_num + 1;
      a(1:m,unique_num) = a(1:m,i);
    end

  end

  a = a(1:m,1:unique_num);

  return
end
