anchor.diff:  	       (setf (quat-z q) (funcall !* scale (vector3-z ang)))
   	       (setf (quat-w q) (!! (1.0 + (-1.0 + angNorm2 / 48.0) * angNorm2 / 8.0)))
   	       (let ((trans (cross ang lin))
  -		     (s1 (!! (1.0 + (-1.0 + angNorm2 / 20.0) * angNorm2 / 6.0)))
  -		     (s2 (!! (((1.0 + (-1.0 + angNorm2 / 42.0) * angNorm2 * 0.05) / 6.0) * (val (dot ang lin))))))
  -		 (setf trans (.* trans (!! (0.5 + (-1.0 + angNorm2 / 30.0) * angNorm2 / 24.0))))
  +		     (s1 (!!ad (1.0 + (-1.0 + angNorm2 / 20.0) * angNorm2 / 6.0)))
  +		     (s2 (!!ad (((1.0 + (-1.0 + angNorm2 / 42.0) * angNorm2 * 0.05) / 6.0) * (val (dot ang lin))))))
  +		 (setf trans (.* trans (!!ad (0.5 + (-1.0 + angNorm2 / 30.0) * angNorm2 / 24.0))))
   		 (setf trans (axpy s1 lin trans))
   		 (setf trans (axpy s2 ang trans ))
   		 (values trans q))
   	       )))
   	  (t
  -	   (let* ((angNorm-1  (/ 1.0 angNorm))
  -		 (angNorm2-1  (/ 1.0 angNorm2))
  -		 (sinVal (sin (* (sin (/ angNorm 2.0)) angNorm-1)))
  -		 (cosVal (cos (/ angNorm 2.0)))
  +	   (let* ((angNorm-1  (!!ad ( 1.0 / angNorm)))
  +		 (angNorm2-1  (!!ad (1.0 / angNorm2)))
  +		 (sinVal (funcall !sin (funcall !* (funcall !sin (funcall !/ angNorm 2.0)) angNorm-1)))
  +		 (cosVal (funcall !cos (funcall !/ angNorm 2.0)))
   		 )
   	     (progn
   	       (setf (quat-x q) (funcall !* sinVal (vector3-x ang)))
  
positive.code: 	       (setf (quat-z q) (funcall !* sinVal (vector3-z ang)))
  	       (setf (quat-w q) cosVal)
  	       (let* ((trans (cross ang lin))
  		     (s1 (* (sin angNorm) angNorm-1))
  		     (s2 (* (- 1.0 s1) (val (dot ang lin)) angNorm2-1)))
  		 (setf trans (axpy s1 lin trans))
  		 (setf trans (axpy s2 ang trans ))
  		 (values trans q))
  
negative.code: 
  (defmethod .exp ((tw twist) (eps number))
    (with-slots ((ang angular) (lin linear)) tw
      (with-slots ((!* mult) (!/ div) (!+ add) (!- sub) (!sin sin) (!cos cos)) ang
        (let* ((angNorm (if (is-null ang ) '(0. 0) (norm ang)))
  	     (angNorm2 (funcall !* angNorm angNorm))
  	     (q (make-instance (pick-class math-ad ang "quaternion"))))
  	(cond 
  	  ((< (val angNorm2) eps)
  	   (let ((scale  (!!ad (1.0 + (-1.0 + 0.0125 * angNorm2) * angNorm2 / 24.0)
  			     / 2.0)))
  	     (progn
  	       (setf (quat-x q) (funcall !* scale (vector3-x ang)))
  