; estimating pi

(define (rand50) (inexact->exact (random #e1e50)))

(define (pi n)
  (let loop ((m n) (k 0))
    (if (zero? m) (sqrt (* 6 n (/ k)))
      (let ((a (rand50)) (b (rand50)))
        (loop (- m 1) (if (= 1 (gcd a b)) (+ k 1) k))))))

(display (pi 100000)) (newline)