RosettaCodeData/Task/Bernoulli-numbers/EchoLisp/bernoulli-numbers-2.echolisp
2016-12-05 23:44:36 +01:00

47 lines
2.3 KiB
Text

;; Bernoulli numbers
;; http://rosettacode.org/wiki/Bernoulli_numbers
(define A (make-vector 100 0))
(define (B n)
(for ((m (1+ n))) ;; #1 creates a large integer
(vector-set! A m (Rational #1 (+ #1 m)))
(for ((j (in-range m 0 -1)))
(vector-set! A (1- j)
(mul (sub (vector-ref A (1- j)) (vector-ref A j)) j))))
(vector-ref A 0))
(for ((b (in-range 0 62 2))) (writeln b (B b))) →
0 1 / 1
2 1 / 6
4 -1 / 30
6 1 / 42
8 -1 / 30
10 5 / 66
12 -691 / 2730
14 7 / 6
16 -3617 / 510
18 43867 / 798
20 -174611 / 330
22 854513 / 138
24 -236364091 / 2730
26 8553103 / 6
28 -23749461029 / 870
30 8615841276005 / 14322
32 -7709321041217 / 510
34 2577687858367 / 6
36 -26315271553053477373 / 1919190
38 2929993913841559 / 6
40 -261082718496449122051 / 13530
42 1520097643918070802691 / 1806
44 -27833269579301024235023 / 690
46 596451111593912163277961 / 282
48 -5609403368997817686249127547 / 46410
50 495057205241079648212477525 / 66
52 -801165718135489957347924991853 / 1590
54 29149963634884862421418123812691 / 798
56 -2479392929313226753685415739663229 / 870
58 84483613348880041862046775994036021 / 354
60 -1215233140483755572040304994079820246041491 / 56786730
(B 1) → 1 / 2