http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_thm_1.19

; T_pq_(a,b): a' <- bq + aq + ap, b' <- bp + aq
; T_pq_(a',b'): b'' <- p(bp + aq) + q(bq + aq + ap)
;                   <- bpp + apq + bqq + aqq + apq
;                   <- (pp + qq)b + (2pq + qq)a
; look for p' = (pp + qq),  q' = (2pq + qq)
;               a'' <- (bpq + aqq) + (q + p)(bq + aq + ap)
;                   <- bpq + aqq + bqq + aqq + apq + bpq + apq + app
;                   <- b(2pq + qq) + a(2pq + qq) + a(qq + pp)              
(define (fib n)
  (fib-iter 1 0 0 1 n))
(define (fib-iter a b p q count)
  (cond ((= count 0) b)
        ((even? count)
          (fib-iter a
                   b
                   (+ (* p p) (* q q))      ; compute p'
                   (+ (* 2 p q) (* q q))    ; compute q'
                   (/ count 2)))
        (else (fib-iter (+ (* b q) (* a q) (* a p))
                        (+ (* b p) (* a q))
                        p
                        q
                        (- count 1)))))
 
exercise_1.19.txt · Last modified: 2009/02/24 16:52 by jhl
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki