bernoulli_numbers_from_pascal_triangle.sf 448 B

123456789101112131415161718192021222324
  1. #!/usr/bin/ruby
  2. # Computing Bernoulli numbers from Pascal's triangle
  3. # See also:
  4. # https://en.wikipedia.org/wiki/Bernoulli_number#Connection_with_Pascal’s_triangle
  5. func pascal_bernoulli_number(n) {
  6. var A = []
  7. for i in (0 ..^ n) {
  8. for k in (0 ..^ n) {
  9. A[i][k] = (k > i+1 ? 0 : binomial(i+2, k))
  10. }
  11. }
  12. A.det / (n+1)!
  13. }
  14. for n in (0..30) {
  15. say "B(#{n}) = #{pascal_bernoulli_number(n).as_rat}"
  16. }