anchor.diff:                         ((complex double-float) #'crunch-c64))))
                 (funcall f length a1 a1 a2)
                 (funcall f length a2 a2 a1)))))))))
  -
  -(answer |How many floating-point operations can this system do per second?|
  -  (format t "~a in single precision and ~a in double precision.~%"
  -          (flops-string (max (flops 'single-float)
  -                             (flops '(complex single-float))))
  -          (flops-string (max (flops 'double-float)
  -                             (flops '(complex double-float))))))
  
positive.code:     (format t "~a per element of of a vector.~%"
              (time-string (/ (find-runtime vector) length)))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; hash tables
  
  (defun hash-runtime (test keys)
    (let ((hash-table (make-hash-table :test test))
          (keys (apply #'vector keys)))
      (loop for key across keys do
        (setf (gethash key hash-table) nil))
      (let ((keys (shuffle keys))
            tmp)
        (values
         (runtime
          (lambda (invocations)
            (declare (type fixnum invocations)
                     (type (simple-array t (*)) keys))
            (dotimes (i (floor invocations (length keys)))
              (dotimes (i (length keys))
                (setf tmp (gethash (svref keys i) hash-table))))))
         tmp))))
  
  (answer |What is the cost of a hash table lookup?|
    (let ((eq (hash-runtime #'eq (iota 40)))
  
negative.code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; number crunching
  
  (answer |How many floating-point operations can this system do per second?|
    (format t "~a in single precision and ~a in double precision.~%"
            (flops-string (max (flops 'single-float)
                               (flops '(complex single-float))))
            (flops-string (max (flops 'double-float)
                               (flops '(complex double-float))))))
  
  (defmacro define-number-cruncher (name type coefficient)
    `(defun ,name (length a b c)
  