1 ;; finite continued fraction
3 ;; f = N1/ (D1 + (N2/ D2 + (N3/ D3 + (.... + Nk/Dk))))
7 [clojure.contrib test-is]))
9 (defn- calc-cont-frac [n-fn d-fn k cnt]
11 (/ (n-fn cnt) (d-fn cnt))
12 (/ (n-fn cnt) (+ (d-fn cnt) (calc-cont-frac n-fn d-fn k (inc cnt))))))
14 (defn cont-frac [n-fn d-fn k]
15 (calc-cont-frac n-fn d-fn k 1))
17 (defn good-enough? [x y tolerance]
18 (< (abs (- x y)) tolerance))
20 (deftest test-cont-frac-of-all-one
21 (is (good-enough? (/ 1.0 (cont-frac (fn [_] 1.0) (fn [_] 1.0) 100))
26 ;; work backwards from kth value to 1st value.
27 (defn- calc-cont-frac-i [n-fn d-fn k cnt result]
30 (calc-cont-frac-i n-fn d-fn k (dec cnt) (/ (n-fn cnt)
34 (defn cont-frac-iter [n-fn d-fn k]
35 (calc-cont-frac-i n-fn d-fn k k 0.0))
37 (deftest test-cont-frac-iter-of-all-one
38 (is (good-enough? (/ 1.0 (cont-frac-iter (fn [_] 1.0) (fn [_] 1.0) 100))