text: #include <math.h>
  
  float gammln(float xx)
  {
  	double x,y,tmp,ser;
  	static double cof[6]={76.18009172947146,-86.50532032941677,
  		24.01409824083091,-1.231739572450155,
  		0.1208650973866179e-2,-0.5395239384953e-5};
  	int j;
  
  	y=x=xx;
  	tmp=x+5.5;
  	tmp -= (x+0.5)*log(tmp);
  	ser=1.000000000190015;
  	for (j=0;j<=5;j++) ser += cof[j]/++y;
  	return -tmp+log(2.5066282746310005*ser/x);
  }
  /* (C) Copr. 1986-92 Numerical Recipes Software 7&X*. */
  