diff options
| author | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-01-22 23:02:42 +0100 |
|---|---|---|
| committer | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-01-22 23:04:23 +0100 |
| commit | de978be143e9a78ccaa9b9e1ed6a8a7cf534d9eb (patch) | |
| tree | 5fff417aeb06a893e4de56a094571318c820fb85 | |
| parent | 1ef25a125370b40b183fa37eb2d73b8c60c9794b (diff) | |
Add simpler method to calculate bbp formula
| -rw-r--r-- | bbp.scm | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -60,3 +60,18 @@ (newline))) (display-digits-of-pi 100) + +(define (digits-of-pi* n) + (define digits (make-vector n 0)) + (define (term k) + (let ([8k (* 8 k)]) + (/ (- (/ 4 (+ 8k 1)) (/ 2 (+ 8k 4)) (/ 1 (+ 8k 5)) (/ 1 (+ 8k 6))) + (expt 16 k)))) + ;; sum n+1 terms + (define sum (let loop ([k 0] [s 0]) + (if (> k n) s (loop (+ k 1) (+ s (term k)))))) + (let ([den (denominator sum)]) + (do ([i 0 (+ i 1)] + [num (numerator sum) (* 16 (mod num den))]) + ((>= i n) digits) + (vector-set! digits i (div num den))))) |
