計算機プログラムの構造と解釈 第二版 P163 問題3.30
全加算機を何個もつなげる感じの問題。
シンプルに考えればいいかなと思って以下。
(define (ripple-carry-adder A B S C) (if (null? S) 'ok (let ((c-out (make-wire))) (full-addr (car A) (car B) C (car S) c-out) (ripple-carry-adder (cdr A) (cdr B) (cdr S) c-out))))
遅延は、full-addr分が、
half-adder-delay = and-gate-delay * 2 + or-gate-delay + inverter-delay full-adder-delay = half-adder *2 + or-gate-delay
nビットだと
n * full-adder-delay = n * (half-adder * 2 + or-gate-delay) = n * ( (and-gate-delay * 2 + or-gate-delay + inverter-delay) * 2 + or-gate-delay) = n * ( and-gate-delay * 4 + or-gate-delay * 3 + inverter-delay *2)
って感じかと思われる。
動かしてないから動くのかどうかよくわからないな。