RosettaCodeData/Task/Continued-fraction/Racket/continued-fraction-1.rkt
Ingy döt Net 6f050a029e update
2013-06-05 21:47:54 +00:00

16 lines
484 B
Racket

#lang racket
(define (calc cf n)
(match/values (cf 0)
[(a0 b0)
(+ a0
(for/fold ([t 0.0]) ([i (in-range (+ n 1) 0 -1)])
(match/values (cf i)
[(a b) (/ b (+ a t))])))]))
(define (cf-sqrt i) (values (if (> i 0) 2 1) 1))
(define (cf-napier i) (values (if (> i 0) i 2) (if (> i 1) (- i 1) 1)))
(define (cf-pi i) (values (if (> i 0) 6 3) (sqr (- (* 2 i) 1))))
(calc cf-sqrt 200)
(calc cf-napier 200)
(calc cf-pi 200)