1.30 Exercise 1.30

(define (sum term a next b)
  (define (iter a result)
    (if (> a b)
        result
        (iter (next a) (+ result (term a)))))
  (iter a 0))

Curiously, in my environment, this procedure gives very slightly different answers compared to above:

> (integral cube 0 1 0.01)

0.24998750000000042

> (integral cube 0 1 0.001)

0.24999987500000073

> (simpson-integral cube 0 1 100.0)

0.25000000000000006

> (simpson-integral cube 0 1 1000.0)

0.25000000000000006