init: v1.0.0
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import math
|
||||
|
||||
|
||||
def loggam(x):
|
||||
# double x0, x2, xp, gl, gl0;
|
||||
# long k, n;
|
||||
|
||||
a = [8.333333333333333e-02, -2.777777777777778e-03,
|
||||
7.936507936507937e-04, -5.952380952380952e-04,
|
||||
8.417508417508418e-04, -1.917526917526918e-03,
|
||||
6.410256410256410e-03, -2.955065359477124e-02,
|
||||
1.796443723688307e-01, -1.39243221690590e+00]
|
||||
x *= 1.0
|
||||
x0 = x
|
||||
n = 0
|
||||
if x == 1.0 or x == 2.0:
|
||||
return 0.0
|
||||
|
||||
elif x <= 7.0:
|
||||
n = int(7 - x)
|
||||
x0 = x + n
|
||||
x2 = 1.0 / (x0*x0)
|
||||
xp = 2 * math.pi
|
||||
gl0 = a[9]
|
||||
for k in range(8, -1, -1):
|
||||
gl0 *= x2
|
||||
gl0 += a[k]
|
||||
gl = gl0/x0 + 0.5 * math.log(xp) + (x0-0.5) * math.log(x0) - x0
|
||||
if x <= 7.0:
|
||||
for k in range(1, n + 1):
|
||||
gl -= math.log(x0-1.0)
|
||||
x0 -= 1.0
|
||||
return gl
|
||||
|
||||
print(loggam(2))
|
||||
print(loggam(3))
|
||||
print(loggam(4))
|
||||
print(loggam(5))
|
||||
Reference in New Issue
Block a user