function ziggurat_test001 ( )

%*****************************************************************************80
%
%% ziggurat_test001() tests SHR3.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    14 October 2013
%
%  Author:
%
%    John Burkardt
%
  u32_max_half = uint32 ( 2147483648 );
  u32_max      = uint32 ( 4294967296 );

  fprintf ( 1, '\n' );
  fprintf ( 1, 'ziggurat_test001():\n' );
  fprintf ( 1, '  SHR3 returns pseudorandom uniformly distributed\n' );
  fprintf ( 1, '  unsigned 32 bit integers.\n' );

  for j = 0 : 2

    if ( mod ( j, 2 ) == 0 )
      key = uint32 ( 123456789 );
    else
      key = uint32 ( 987654321 );
    end

    fprintf ( 1, '\n' );
    fprintf ( 1, '  %6d  %14u\n', 0, key );
    fprintf ( 1, '\n' );

    for i = 1 : 10
      [ value, key ] = shr3 ( key );
      if ( key < u32_max_half )
        skey = key;
      else
        skey = - int32 ( u32_max - key ) + 1;
      end
      fprintf ( 1, '  %6d  %12d  %12u  %12u\n', i, skey, key, value );
    end

  end

  return
end
