24 lines
672 B
Plaintext
24 lines
672 B
Plaintext
*FLOAT64
|
|
INSTALL @lib$+"FNUSING"
|
|
|
|
FOR x = 0.1 TO 2.05 STEP 0.1
|
|
PRINT FNusing("#.#",x), FNusing("##.############", FNgamma(x))
|
|
NEXT
|
|
END
|
|
|
|
DEF FNgamma(z) = EXP(FNlngamma(z))
|
|
|
|
DEF FNlngamma(z)
|
|
LOCAL a, b, i%, lz()
|
|
DIM lz(6)
|
|
lz() = 1.000000000190015, 76.18009172947146, -86.50532032941677, \
|
|
\ 24.01409824083091, -1.231739572450155, 0.0012086509738662, -0.000005395239385
|
|
IF z < 0.5 THEN = LN(PI / SIN(PI * z)) - FNlngamma(1.0 - z)
|
|
z -= 1.0
|
|
b = z + 5.5
|
|
a = lz(0)
|
|
FOR i% = 1 TO 6
|
|
a += lz(i%) / (z + i%)
|
|
NEXT
|
|
= (LNSQR(2*PI) + LN(a) - b) + LN(b) * (z+0.5)
|