I have done exercise 1.7 in SICP (calculate square root precision when change in guesses is under a certain value), but I am calling the change-in-precision function twice in each iteration, which disturbs me. I wonder if there is a better way to implement this.
(define (average . ns) (/ (apply + ns) (length ns)))
(define (change-in-precision guess x)
( - (- guess (average guess (/ x guess)))))
(define (sqrt guess x)
(if (< (abs (change-in-precision guess x)) (/ 0.00000001 guess))
(+ guess (change-in-precision guess x))
(sqrt (+ guess (change-in-precision guess x)) x)))