A Stirling series approximation of the gamma function.

View versions (1)

Interface

#include <codecogs/maths/special/gamma/loggamma_simple.h>

using namespace Maths::Special::Gamma;

Returns a simple approximation to the log-gamma functions. If your only interested in low levels of accuracy (10 significant figures), then this solution is evaluated quickly and is relatively stable.

This approximation is achieved using the Stirling series (in its normal form) that provides a solution, given by the simple analytic expression

ln \Gamma(z) = \frac{1}{2} \ln(2 \pi) + (z - \frac{1}{2}) \ln z - z + \frac{1}{12z} - \frac{1}{360 z^3} + \frac{1}{1260 z^5} - ...
(1)

See also log_gamma_stirling

Example 1

#include <codecogs/maths/special/gamma/loggamma_simple.h>
#include <codecogs/maths/special/gamma/log_gamma_stirling.h>
#include <stdio.h>

int main()
{
  for(double x=3; x<5; x+=0.3)
    printf("\n x=%lf logGamma_simple=%lf  log_gamma_stirling=%lf",x, Maths::Special::Gamma::logGamma_simple(x),
           Maths::Special::Gamma::log_gamma_stirling(x));
  return 0;
}

Output:

x=3.000000 logGamma_simple=0.693147  log_gamma_stirling=0.693147
x=3.300000 logGamma_simple=0.987099  log_gamma_stirling=0.987099
x=3.600000 logGamma_simple=1.312923  log_gamma_stirling=1.312923
x=3.900000 logGamma_simple=1.667580  log_gamma_stirling=1.667580
x=4.200000 logGamma_simple=2.048556  log_gamma_stirling=2.048556
x=4.500000 logGamma_simple=2.453737  log_gamma_stirling=2.453737
x=4.800000 logGamma_simple=2.881323  log_gamma_stirling=2.881323

Parameters

x
argument
GPL Licence — free for non commercial use. See Licence details.

Interactive Calculator

x
Result