euler_numbers_from_factorials.sf 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/ruby
  2. # Author: Daniel "Trizen" Șuteu
  3. # Date: 22 May 2018
  4. # https://github.com/trizen
  5. # A new algorithm for computing the Euler numbers.
  6. # See also:
  7. # https://oeis.org/A122045
  8. # https://en.wikipedia.org/wiki/Euler_number
  9. func euler_numbers(n) {
  10. var E = [1]
  11. for i in (1 .. n) {
  12. for k in (0 ..^ i) {
  13. E[i] := 0 -= (E[k] / (2*(i-k))!)
  14. }
  15. }
  16. E.map_kv { |k,v| v * (2*k)! }
  17. }
  18. var E = euler_numbers(20) # first 20 Euler numbers at even indices
  19. for k,v in (E.kv) {
  20. say "E(#{2*k}) = #{v}"
  21. }
  22. __END__
  23. E(0) = 1
  24. E(2) = -1
  25. E(4) = 5
  26. E(6) = -61
  27. E(8) = 1385
  28. E(10) = -50521
  29. E(12) = 2702765
  30. E(14) = -199360981
  31. E(16) = 19391512145
  32. E(18) = -2404879675441
  33. E(20) = 370371188237525
  34. E(22) = -69348874393137901
  35. E(24) = 15514534163557086905
  36. E(26) = -4087072509293123892361
  37. E(28) = 1252259641403629865468285
  38. E(30) = -441543893249023104553682821
  39. E(32) = 177519391579539289436664789665
  40. E(34) = -80723299235887898062168247453281
  41. E(36) = 41222060339517702122347079671259045
  42. E(38) = -23489580527043108252017828576198947741
  43. E(40) = 14851150718114980017877156781405826684425