The following code runs in reasonable time (about 5s) on 64-bit 5.3.4, but takes about 20x as long on 32-bit. I adapted this code from some scheme code on the PE forum. Thoughts?
Thanks, -Joe (define (euler210) (define limit (expt 10 8)) (define ldiv4 (quotient limit 4)) (define ldiv8 (quotient limit 8)) (define ldiv8xrad2 (inexact->exact (floor (* ldiv8 (sqrt 2))))) (define sqrldiv8x2 (* ldiv8 ldiv8 2)) (+ (* 3 (* limit (/ limit 2))) ; rectangular regions (- (* ldiv4 (add1 ldiv4)) 2) (* 8 (let loop ([x (add1 ldiv8)] [sum 0]) ; 1/8 of circle points (outside of inner square) (if (< ldiv8xrad2 x) sum (let* ([y (sqrt (- sqrldiv8x2 (* x x)))] [ymax (inexact->exact (floor (if (integer? y) (- y 1) y)))]) (loop (add1 x) (+ sum ymax)))))) (* 4 (- ldiv8xrad2 ldiv8))))
____________________ Racket Users list: http://lists.racket-lang.org/users