(define (even? n) (= (remainder n 2) 0)) (define (double n) (+ n n)) (define (halve n) (/ n 2)) (define (fast-mut a b) (cond ((= b 0) 0) ((= b 1) a) ((even? b) (double (fast-mut a (halve b)))) (else (+ a (fast-mut a (- b 1)))))) (define (fast-mut a b c) (cond ((= b 0) 0) ((= b 1) (+ a c)) ((even? b) (fast-mut (double a) (halve b) c)) (else (fast-mut a (- b 1) (+ a c)))))