(define (good-enough? guess x)
(< (abs (- (square guess) x)) .001))
(define (square x)
(* x x))
(define (sqrt x)
(define (good-enough? guess x)
(< (abs (- (square guess) x)) .001))
(define (improve guess x)
(average guess (/ x guess)))
(define (sqrt-iter guess x)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x) x)))
(sqrt-iter 1 x))
(define (sqrt x)
(define (good-enough? guess)
(< (abs (- (square guess) x)) .001))
(define (improve guess)
(average guess (/ x guess)))
(define (sqrt-iter guess)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x) x)))
(sqrt-iter 1 x))
(define (prime1? n)
(= n (smallest-divisor n)))
(define (smallest-divisor n)
(define (find-divisor n test-divisor)
(cond ((> (square test-divisor) n) n)
((divides? test-divisor n) test-divisor)
(else (find-divisor n (+ test-divisor 1)))))
(find-divisor n 2))
(define (prime2? n)
(define (format-test)
(define a (+ 2 (random (- n 2))))
(= (expmod a n n) a))
(cond ((= times 0) #T)
((format-test) (prime2? n (- times 1)))
(else '())))
(define (expmod b e m)
(cond ((= e 0) 1)
((even? e) (remainder (square (expmod b (/ e 2) m)) m))
(else (remainder (* b (expmod b (- e 1) m)) m))))
(define (sum-integer a b)
(if (> a b)
()
(+ a (sum (+ a 1) b))))
(define (sum-cube a b)
(if (> a b)
()
(+ (cube a) (sum-cube (+ a 1) b))))
(define (pi8-sum a b)
(if (> a b)
()
(+ (/ 1 (* a (+ a 2))) (pi8-sum (+ a 4) b))))
(define pi (* 8 (pi8-sum 1 1000)))
(define (sum term a next b)
(if (> a b)
()
(+ (term a) (sum term (next a) next b))))
(define (sum-cube2 a b)
(sum cube a 1+ b))
(define (pi8-sum2 a b)
(define (pi-term x)
(/ 1 (* x (+ x 2))))
(define (pi-next x)
(+ x 4))
(sum pi-term a pi-next b))
(define (sum-integer2 a b)
(define (id x) x)
(sum id a 1+ b))
(define (integral f a b dx)
(define (add-dx x) (+ x dx))
(* dx (sum f a add-dx b)))
(define (sum-integer a b)
(sum (lambda(x) x) a 1+ b)
(define (integral f a b dx)
(* dx (sum f a (lambda (x) (+ x dx)) b)))
(define (f x y)
(define a (+ 1 (* x y)))
(define b (- 1 y))
(+ (* x (square a)) (* y b) (* a b)))
(define (f x y)
(define f-helper a b)
(+ (* x (square a)) (* y b) (* a b)))
(f-helper (+ 1 (* x y)) (- 1 y)))
(define (f x y)
((lambda (a b)
(+ (* x (square a)) (* y b) (* a b)))
(+ 1 (* x y)) (- 1 y)))
(define (f x y)
(let ((a (+ 1 (* x y)))
(b (- 1 y)))
(+ (* x (square a)) (* y b) (* a b))))
(define zero
(lambda (f) 0))
(define (next n)
(lambda (f)
(f (n f))))
(define zero
(lambda (f)
(lambda (nula)
nula)))
(define (next n)
(lambda (f)
(lambda (nula)
(f ((n f) nula)))))
(define (plus m n)
(lambda (f)
(lambda (nula)
((m f) ((n f) nula)))))
(define (krat m n)
(lambda (f)
(lambda (nula)
((m (n f)) nula))))
(define (na m n)
(lambda (f)
(lambda (nula)
(((n m) f) nula))))