ガンマ関数の符号を得るには

普通のlgamma関数は、ガンマ関数の絶対値の対数を返しますが、
符号は外部整数 signgamに返ります。
符号の返る外部整数 extern int signgam を用い、Γ(x)の符号を次のように得ます。
extern int signgam;
y = lgamma(x);



/*(使用例)*/
/*test_gamma.c*/
#include <stdlib.h>
#include <math.h>

int main(int argc, char  *argv[])
{
  double x,y;
  extern int signgam;/*ここに±1が返ります。*/

  if (argc == 2)  x = atof (argv[1]);
  else return 0;
  y = lgamma(x);/*ガンマ関数の絶対値の対数*/
  printf("gamma(x)=%g\n", (double)signgam * exp(y));
  return 0;
}



これを、 gcc test_gamma.c -lm -o test_gamma とコンパイルし、

[foo@localhost work]$ ./test_gamma 5
gamma(x)=24

と実行できます。
 

戻る