File tree 1 file changed +17
-21
lines changed
1 file changed +17
-21
lines changed Original file line number Diff line number Diff line change 1
1
#!/usr/bin/ruby
2
2
3
- #
4
- ## http://rosettacode.org/wiki/Faulhaber%27s_formula
5
- #
6
-
7
- func bernoulli ( { . is_one } ) { 1 /2 }
8
- func bernoulli ( { . is_odd } ) { 0 /1 }
9
-
10
- func bernoulli ( n ) {
11
-
12
- var a = [ ]
13
- for m in ^( n +1 ) {
14
- a [ m ] = 1 /( m + 1 )
15
- for j in ( m ^..0 + 1 ) {
16
- a [ j -1 ] = j *( a [ j -1 ] - a [ j ] )
17
- }
18
- }
19
-
20
- return a [ 0 ]
21
- }
3
+ # See also:
4
+ # https://en.wikipedia.org/wiki/Faulhaber%27s_formula
5
+ # https://rosettacode.org/wiki/Faulhaber%27s_formula
22
6
23
7
func faulhaber_s_formula ( p ) {
24
8
@@ -37,6 +21,18 @@ func faulhaber_s_formula(p) {
37
21
"1/#{ p + 1 } * (#{ formula } )"
38
22
}
39
23
40
- for p in ^ 10 {
41
- printf ( "%2d: %s\n " , p , faulhaber_s_formula ( p ) )
24
+ 10 . times { | p |
25
+ printf ( "F(%s) = %s\n " , p , faulhaber_s_formula ( p ) )
42
26
}
27
+
28
+ __END__
29
+ F ( 0 ) = 1 /1 * ( n )
30
+ F ( 1 ) = 1 /2 * ( n ^2 + n )
31
+ F ( 2 ) = 1 /3 * ( n ^3 + 3 /2 *n ^2 + 1 /2 *n )
32
+ F ( 3 ) = 1 /4 * ( n ^4 + 2 *n ^3 + n ^2 )
33
+ F ( 4 ) = 1 /5 * ( n ^5 + 5 /2 *n ^4 + 5 /3 *n ^3 + -1 /6 *n )
34
+ F ( 5 ) = 1 /6 * ( n ^6 + 3 *n ^5 + 5 /2 *n ^4 + -1 /2 *n ^2 )
35
+ F ( 6 ) = 1 /7 * ( n ^7 + 7 /2 *n ^6 + 7 /2 *n ^5 + -7 /6 *n ^3 + 1 /6 *n )
36
+ F ( 7 ) = 1 /8 * ( n ^8 + 4 *n ^7 + 14 /3 *n ^6 + -7 /3 *n ^4 + 2 /3 *n ^2 )
37
+ F ( 8 ) = 1 /9 * ( n ^9 + 9 /2 *n ^8 + 6 *n ^7 + -21 /5 *n ^5 + 2 *n ^3 + -3 /10 *n )
38
+ F ( 9 ) = 1 /10 * ( n ^10 + 5 *n ^9 + 15 /2 *n ^8 + -7 *n ^6 + 5 *n ^4 + -3 /2 *n ^2 )
You can’t perform that action at this time.
0 commit comments