function value = pyramid_unit_monomial_3d ( alpha, beta, gamma )

%*****************************************************************************80
%
%% PYRAMID_UNIT_MONOMIAL_3D: monomial integral in a unit pyramid in 3D.
%
%  Discussion:
%
%    This routine returns the integral of X^ALPHA Y^BETA Z^GAMMA over
%    the unit pyramid.
%
%    The unit pyramid is defined as:
%
%    - ( 1 - Z ) <= X <= 1 - Z
%    - ( 1 - Z ) <= Y <= 1 - Z
%              0 <= Z <= 1.
%
%  Licensing:
%
%    This code is distributed under the GNU LGPL license.
%
%  Modified:
%
%    05 April 2008
%
%  Author:
%
%    John Burkardt
%
%  Reference:
%
%    Arthur Stroud,
%    Approximate Calculation of Multiple Integrals,
%    Prentice Hall, 1971,
%    ISBN: 0130438936,
%    LC: QA311.S85.
%
%  Parameters:
%
%    Input, integer ALPHA, BETA, GAMMA, the exponents of
%    X, Y and Z in the monomial.
%
%    Output, real PYRAMID_UNIT_MONOMIAL_3D, the volume of the pyramid.
%
  value = 0.0;

  if ( mod ( alpha, 2 ) == 0 && mod ( beta, 2 ) == 0 )

    i_hi = 2 + alpha + beta;

    for i = 0 : i_hi
      value = value + r8_mop ( i ) * r8_choose ( i_hi, i ) / ( i + gamma + 1 );
    end

    value = value * 2.0 / ( alpha + 1 ) * 2.0 / ( beta + 1 );

  end

  return
end
