anchor.diff:  
   (setq twad (make-instance 'twist :lin (make-instance 'vector3ad :x 1.0 :y 2.0 :z 3.0) :ang (make-instance 'vector3ad :x 3.0)))
   
  +
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  +;;                             Arithmetic                       ;;
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  +
  +(defmethod .* ((tw twist) a)
  +"Multiply twist tw by scalar a."
  +  (with-slots (linear angular) tw
  +      (make-instance 'twist 
  +		     :lin (.* linear a)
  +		     :ang (.* angular a))))
  +
  +
  +
   (defmethod .exp ((tw twist) (eps number))
     (with-slots ((ang angular) (lin linear)) tw
       (with-slots ((!* mult) (!/ div) (!+ add) (!- sub) (!sin sin) (!cos cos)) ang
  
positive.code: 		     (s2 (funcall !* (funcall !- 1.0 s1) (funcall !* (dot ang lin) angNorm2-1))))
  		 (setf trans (axpy s1 lin trans))
  		 (setf trans (axpy s2 ang trans ))
  		 (values trans q))
  	       ))
  
  	   ))))))
  
negative.code: 	     (q (make-instance (pick-class math-ad ang "quaternion"))))
  	(cond 
  	  ((< (val angNorm2) eps)
  	   (let ((scale  (!! (1.0 + (-1.0 + 0.0125 * angNorm2) * angNorm2 / 24.0)
  			     / 2.0)))
  	     (progn
  	       (setf (quat-x q) (funcall !* scale (vector3-x ang)))
  