anchor.diff:  	    result
   	    argvalues)
         (cffi:mem-aref result :double))))
  +
  +(defun complex-in-out (complex-number)
  +  (with-foreign-objects
  +      ((cif 'ffi-cif)
  +       (argtypes :pointer 1)
  +       (argvalues :pointer 1)
  +       (result 'complex)
  +       (argument 'complex))
  +    (setf (cffi:mem-aref argtypes :pointer 0) +pointer-type-complex+)
  +    (setf (cffi:mem-aref (cffi:foreign-slot-value argument 'complex 'dat) :double 0)
  +	  (realpart complex-number)
  +	  (cffi:mem-aref (cffi:foreign-slot-value argument 'complex 'dat) :double 1)
  +	  (imagpart complex-number))
  +    (setf (cffi:mem-aref argvalues :pointer 0) argument)
  +    (when (eql
  +	   :OK
  +	   (prep-cif cif :default-abi 1 +pointer-type-complex+ argtypes))
  +      (call cif
  +	    (cffi:foreign-symbol-pointer "gsl_complex_conjugate")
  +	    result
  +	    argvalues)
  +      (let ((res (cffi:foreign-slot-value result 'complex 'dat)))
  +	(complex
  +	 (cffi:mem-aref res :double 0)
  +	 (cffi:mem-aref res :double 1))))))
  
positive.code: ;; Interface to libffi functions
  ;; Liam Healy 2009-04-06 21:14:55EDT functions.lisp
  ;; Time-stamp: <2009-04-07 21:50:30EDT functions.lisp>
  
  (in-package :fsbv)
  
  
negative.code: (cffi:defcstruct complex
    (dat :double :count 2))
  
  (defun complex-in (complex-number)
    (with-foreign-objects
        ((cif 'ffi-cif)
         (argtypes :pointer 1)
         (argvalues :pointer 1)
         (result :double)
         (argument 'complex))
      (setf (cffi:mem-aref argtypes :pointer 0) +pointer-type-complex+)
      (setf (cffi:mem-aref (cffi:foreign-slot-value argument 'complex 'dat) :double 0)
  	  (realpart complex-number)
  	  (cffi:mem-aref (cffi:foreign-slot-value argument 'complex 'dat) :double 1)
  	  (imagpart complex-number))
      (setf (cffi:mem-aref argvalues :pointer 0) argument)
      (when (eql
  	   :OK
  	   (prep-cif cif :default-abi 1 +pointer-type-double+ argtypes))
  