anchor.diff:    (x :double)
     (y :double)
     (z :double))
  +
  +(defmethod cffi:translate-into-foreign-memory ((value double3)
  +                                               (type double3-c)
  +                                               ptr)
  +  (cffi:with-foreign-slots ((x y z) ptr (:struct double3))
  +    (setf x (double3-x value)
  +          y (double3-y value)
  +          z (double3-z value))))
  +
  +(defmethod cffi:translate-from-foreign (value (type double3-c))
  +  (cffi:with-foreign-slots ((x y z) value (:struct double3))
  +    (make-double3 x y z)))
  +
  +
  +;;;
  +;;; Double4
  +;;;
   
   (defstruct (double4 (:constructor make-double4 (x y z w)))
     (x 0.0d0 :type double-float)
  
positive.code:   (z :float)
    (w :float))
  
  (defstruct (double3 (:constructor make-double3 (x y z)))
    (x 0.0d0 :type double-float)
    (y 0.0d0 :type double-float)
  
negative.code: 
  
  ;;;
  ;;; Float3
  ;;;
  
  (defstruct (float3 (:constructor make-float3 (x y z)))
  