Practice 3.30

(define (ripple-carry-adder a b s c)
  (let ((count (length c)))
    (define (rip-rec a b s c)
      (if (or (null? a) (null? b) (null? c) (null? s))
          'done
          (begin (full-adder (car a) (car b) (car s) (car c))
                 (rip-rec (cdr a) (cdr b) (cdr s) (cdr c)))))
    (rip-rec a b s c)))
  • half-adder-delay

    • delay of s

      (+ (max or-gate-delay (+ and-gate-delay invert-gate-delay)) and-gate-delay)

    • deley of c

      and-gate-delay

  • full-adder-delay

    • delay of SUM

      (* 2 (get-half-delay s))

    • delay of C-outc

      (+ (get-half-delay ‘s) (get-half-delay ’c) or-gate-delay)

  • ripple-carry-adder-delay

    (* k 2 (+ (max or-gate-delay (+ and-gate-delay invert-gate-delay)) and-gate-delay)