-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgregory_coefficients.sf
61 lines (52 loc) · 2.65 KB
/
gregory_coefficients.sf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/ruby
# Author: Daniel "Trizen" Șuteu
# Date: 24 February 2018
# https://github.com/trizen
# A new recurrence for computing the logarithmic numbers (also known as Gregory coefficients).
# Formula:
# a(0) = 1
# a(n) = Sum_{k=0..n-1} (-1)^(n - k + 1) * a(k) / (n - k + 1)
# See also:
# https://oeis.org/A002206 (numerators)
# https://oeis.org/A002207 (denominators)
# Wikipedia:
# https://en.wikipedia.org/wiki/Gregory_coefficients
func a((0)) { 1 }
func a(n) is cached {
sum(^n, {|k| (-1)**(n - k + 1) * a(k) / (n - k + 1) })
}
for n in (0..30) {
printf("G(%2d) = %40s / %s\n", n, a(n) -> nude)
}
__END__
G( 0) = 1 / 1
G( 1) = 1 / 2
G( 2) = -1 / 12
G( 3) = 1 / 24
G( 4) = -19 / 720
G( 5) = 3 / 160
G( 6) = -863 / 60480
G( 7) = 275 / 24192
G( 8) = -33953 / 3628800
G( 9) = 8183 / 1036800
G(10) = -3250433 / 479001600
G(11) = 4671 / 788480
G(12) = -13695779093 / 2615348736000
G(13) = 2224234463 / 475517952000
G(14) = -132282840127 / 31384184832000
G(15) = 2639651053 / 689762304000
G(16) = -111956703448001 / 32011868528640000
G(17) = 50188465 / 15613165568
G(18) = -2334028946344463 / 786014494949376000
G(19) = 301124035185049 / 109285437800448000
G(20) = -12365722323469980029 / 4817145976189747200000
G(21) = 8519318716801273673 / 3549475982455603200000
G(22) = -1232577428602510264423 / 547454472117564211200000
G(23) = 530916160966849 / 250639102771200000
G(24) = -101543126947618093900697699 / 50814724101952310083584000000
G(25) = 439498633365840119748791 / 232561666370491121664000000
G(26) = -64252172543850268483123097 / 35869217013142807117824000000
G(27) = 928685729779901399375 / 545814099444746491527168
G(28) = -1718089509598695642524656240811 / 1061011439248764234545233920000000
G(29) = 5150046951561533494311 / 3335806532892753920000000
G(30) = -44810233755305010150728029810063187 / 30391611665841602734313680404480000000