anchor.diff:    (defun ensure-scalar (s)
       (coerce s 'scalar)))
   
  -(declaim (ftype (function (number) scalar) invert half inverse-sqrt square))
  -(declaim (inline invert half inverse-sqrt lerp square))
  +(declaim (ftype (function (number) scalar) invert negate half inverse-sqrt square))
  +(declaim (inline invert negate half inverse-sqrt lerp square))
   
   (defun invert (s)
     "Return one over scalar."
     (the scalar (/ +scalar-one+ s)))
  +
   (define-compiler-macro invert (&whole form s)
     (cond ((and (constantp s) (not (typep s 'scalar)))
            `(invert ,(ensure-scalar s)))
           (t
            `(,@form))))
   
  +(defun negate (s)
  +  "Return s * -1."
  +  (the scalar (* s -1)))
   
   (defun half (s)
     "Return half the value."
  
positive.code: 
  (defun lerp (delta low high)
    "Linearly interpolate between low and high."
    (declare (type scalar delta low high)
             (optimize (speed 3)))
    (the scalar (+ low (* delta (- high low)))))
  
  (defun square (s)
    (declare (type scalar s)
             (optimize (speed 3)))
    (the scalar (* s s)))
  
   ;;; vecmath.lisp ends here
  
negative.code: ;;; Author: Ole Arndt <ole@sugarshark.com>
  ;;; Licence: BSD
  ;;;
  ;;; Commentary:
  ;;;
  ;;;
  
  (in-package :vecmath)
  
  ;; (declaim (optimize (speed 3) (space 2) (debug 0) (safety 0)))
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (defparameter *optimization*
  