#lang sicp (define (double x) (* 2 x)) (define (halve x) (/ x 2)) (define (*aux a b acc) (cond ((= b 0) acc) ((even? b) (*aux (double a) (halve b) acc)) (else (*aux a (- b 1) (+ acc a))))) (define (fast-mul a b) (*aux a b 0))