anchor.diff:          :lisp-unit 
           :numerical 
           :numerical.roots
  -        :numerical.interpolation))
  +        :numerical.interpolation
  +        :numerical.integration))
   
   (in-package :numerical.test)
   
  
positive.code:     (let ((exact (ddf 2d0))
            (d1 (second-derivative/3 #'f))
            (d2 (second-derivative/5 #'f))
            (d3 (second-derivative #'f :step .4 :tolerance 5d-15)))
        (!~= exact (funcall d1 2))
        (ballpark exact (funcall d2 2))
        (ballpark exact (funcall d3 2))
        )))
      
  (let ((*print-errors* t)
        (*print-failures* t))
    (run-tests))
  
negative.code: (defun really-close (a b)
    (< (abs (- a b)) 5d-15))
  
  (defmacro ballpark (a b)
    `(if_ ,b
         (assert-true (< (abs (- ,a _)) 5d-3))
         (assert-equal ,a _)))
  
  (defmacro ~= (a b)
    `(if_ ,b
          (assert-true (pretty-close ,a _))
          (assert-equal ,a _)))
  
  (defmacro == (a b)
    `(if_ ,b
          (assert-true (really-close ,a _))
          (assert-equal ,a _)))
  
  (defun !~= (a b)
    (assert-false (pretty-close a b)))
  
  (defun !== (a b)
    (assert-false (really-close a b)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; root finding tests
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (define-test bisect
    (let ((exact (/ pi 2)))
  