📄 func.for
字号:
* GAM.FOR
*
FUNCTION GAM(X)
*
*--calculates the Gamma function of X
*
IMPLICIT DOUBLE PRECISION (A-H)
IMPLICIT DOUBLE PRECISION (O-Z)
A=1.
Y=X
IF (Y.LT.1.) THEN
A=A/Y
ELSE
50 Y=Y-1
IF (Y.GE.1.) THEN
A=A*Y
GO TO 50
END IF
END IF
GAM=A*(1.-0.5748646*Y+0.9512363*Y**2-0.6998588*Y**3+
& 0.4245549*Y**4-0.1010678*Y**5)
RETURN
END
* RF.FOR
*
FUNCTION RF(IDUM)
*--generates a uniformly distributed random fraction between 0 and 1
*----IDUM will generally be 0, but negative values may be used to
*------re-initialize the seed
SAVE MA,INEXT,INEXTP
PARAMETER (MBIG=1000000000,MSEED=161803398,MZ=0,FAC=1.E-9)
DIMENSION MA(55)
DATA IFF/0/
IF (IDUM.LT.0.OR.IFF.EQ.0) THEN
IFF=1
MJ=MSEED-IABS(IDUM)
MJ=MOD(MJ,MBIG)
MA(55)=MJ
MK=1
DO 50 I=1,54
II=MOD(21*I,55)
MA(II)=MK
MK=MJ-MK
IF (MK.LT.MZ) MK=MK+MBIG
MJ=MA(II)
50 CONTINUE
DO 100 K=1,4
DO 60 I=1,55
MA(I)=MA(I)-MA(1+MOD(I+30,55))
IF (MA(I).LT.MZ) MA(I)=MA(I)+MBIG
60 CONTINUE
100 CONTINUE
INEXT=0
INEXTP=31
END IF
200 INEXT=INEXT+1
IF (INEXT.EQ.56) INEXT=1
INEXTP=INEXTP+1
IF (INEXTP.EQ.56) INEXTP=1
MJ=MA(INEXT)-MA(INEXTP)
IF (MJ.LT.MZ) MJ=MJ+MBIG
MA(INEXT)=MJ
RF=MJ*FAC
IF (RF.GT.1.E-8.AND.RF.LT.0.99999999) RETURN
GO TO 200
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -