function index_test05 ( )

%*****************************************************************************80
%
%% index_test05() tests INDEX0N, INDEX1N, INDEXN0 and INDEXN1.
%
%  Licensing:
%
%    This code is distributed under the MIT license. 
%
%  Modified:
%
%    27 November 2012
%
%  Author:
%
%    John Burkardt
%
  n = 4;

  fprintf ( 1, '\n' );
  fprintf ( 1, 'index_test05():\n' );
  fprintf ( 1, '  For an N-dimensional array,\n' );
  fprintf ( 1, '  INDEX0N column indexes with zero base,\n' );
  fprintf ( 1, '  INDEX1N column indexes with unit base,\n' );
  fprintf ( 1, '  INDEXN0 row indexes with zero base,\n' );
  fprintf ( 1, '  INDEXN1 row indexes with unit base.\n' );
  fprintf ( 1, '\n' );
  fprintf ( 1, '                       Min         Index           Max\n' );

  i_min(1) = 1;
  i(1) = 3;
  i_max(1) = 5;
  i_min(2) = 1;
  i(2) = 2;
  i_max(2) = 4;
  i_min(3) = 1;
  i(3) = 1;
  i_max(3) = 3;
  i_min(4) = 1;
  i(4) = 2;
  i_max(4) = 2;

  m = prod ( i_max(1:n) - i_min(1:n) + 1 );

  fprintf ( '  ND Index:   %3d%3d%3d%3d  %3d%3d%3d%3d  %3d%3d%3d%3d\n', ...
    i_min(1:n), i(1:n), i_max(1:n) );
  value = index0n ( n, i_min, i, i_max );
  index_min = 0;
  index_max = index_min + m - 1;
  fprintf ( '  INDEX0N:    %12d  %12d  %12d\n', index_min, value, index_max );

  value = index1n ( n, i_min, i, i_max );
  index_min = 1;
  index_max = index_min + m - 1;
  fprintf ( '  INDEX1N:    %12d  %12d  %12d\n', index_min, value, index_max );

  value = indexn0 ( n, i_min, i, i_max );
  index_min = 0;
  index_max = index_min + m - 1;
  fprintf ( '  INDEXN0:    %12d  %12d  %12d\n', index_min, value, index_max );

  value = indexn1 ( n, i_min, i, i_max );
  index_min = 1;
  index_max = index_min + m - 1;
  fprintf ( '  INDEXN1:    %12d  %12d  %12d\n', index_min, value, index_max );

  return
end

