function ziggurat_test04 ( )

%*****************************************************************************80
%
%% ziggurat_test04() tests R4_EXP.
%
%  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_test04()\n' );
  fprintf ( 1, '  R4_EXP returns pseudorandom exponentially distributed\n' );
  fprintf ( 1, '  real numbers between 0 and 1.\n' );

  [ ke, fe, we ] = r4_exp_setup ( );

  for j = 0 : 2

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

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

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

  end

  return
end
