Download gamma.eso

Back to the list

   1 : C GAMMA     SOURCE    KK2000    13/11/08    21:15:41     7860           
   2 :       SUBROUTINE GAMMA(X,GA)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : 
   6 : -INC CCREEL
   7 : C
   8 : C     ==================================================
   9 : C     Programme de : http://jin.ece.uiuc.edu/routines/routines.html
  10 : C     Purpose: Compute the gamma function G(x)
  11 : C     Input :  x  --- Argument of G(x)
  12 : C                     (x is not equal to 0,-1,-2,...)
  13 : C     Output:  GA --- G(x)
  14 : C     ==================================================
  15 : C
  16 :       DIMENSION G(26)
  17 :       DATA G/ 1D0                 , .5772156649015329D0,
  18 :      &       -.6558780715202538D0 ,-.420026350340952D-1,
  19 :      &        .1665386113822915D0 ,-.421977345555443D-1,
  20 :      &       -.96219715278770D-2  , .72189432466630D-2,
  21 :      &       -.11651675918591D-2  ,-.2152416741149D-3,
  22 :      &        .1280502823882D-3   ,-.201348547807D-4,
  23 :      &       -.12504934821D-5     , .11330272320D-5,
  24 :      &       -.2056338417D-6      , .61160950D-8,
  25 :      &        .50020075D-8        ,-.11812746D-8,
  26 :      &        .1043427D-9         , .77823D-11,
  27 :      &       -.36968D-11          , .51D-12,
  28 :      &       -.206D-13            ,-.54D-14,
  29 :      &        .14D-14             , .1D-15 /
  30 : 
  31 : C
  32 :       XINT=FLOAT(INT(X))
  33 :       IF (X.EQ.XINT) THEN
  34 :          IF (X.GT.0D0) THEN
  35 :             GA=1D0
  36 :             M1=INT(X-1.D0)
  37 :             DO 10 K=2,M1
  38 : 10             GA=GA*FLOAT(K)
  39 :          ELSE
  40 :             GA=1D0+300D0
  41 :          ENDIF
  42 :       ELSE
  43 :          R=1D0
  44 :          IF (ABS(X).GT.1.D0) THEN
  45 :             Z=ABS(X)
  46 :             M=INT(Z)
  47 :             DO 15 K=1,M
  48 : 15             R=R*(Z-FLOAT(K))
  49 :             Z=Z-FLOAT(M)
  50 :          ELSE
  51 :             Z=X
  52 :          ENDIF
  53 :          GR=G(26)
  54 :          DO 20 K=25,1,-1
  55 : 20          GR=GR*Z+G(K)
  56 :          GA=1D0/(GR*Z)
  57 :          IF (ABS(X).GT.1.D0) THEN
  58 :             GA=GA*R
  59 :             IF (X.LT.0.D0) GA=-XPI/(X*GA*SIN(XPI*X))
  60 :          ENDIF
  61 :       ENDIF
  62 :       RETURN
  63 :       END
  64 :  
  65 :  

© Cast3M 2003 - All rights reserved.
Disclaimer