From de978be143e9a78ccaa9b9e1ed6a8a7cf534d9eb Mon Sep 17 00:00:00 2001 From: Thomas Guillermo Albers Raviola Date: Thu, 22 Jan 2026 23:02:42 +0100 Subject: Add simpler method to calculate bbp formula --- bbp.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'bbp.scm') diff --git a/bbp.scm b/bbp.scm index b391bd5..9865a35 100644 --- a/bbp.scm +++ b/bbp.scm @@ -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))))) -- cgit v1.2.3