Hi,
Well, the code says otherwise:
#-gsl2
(defun jacobian (solver)
;; Raw pointer, because we presume we're passing it on to another GSL function.
(cffi:foreign-slot-value (mpointer solver) '(:struct gsl-fdffit-solver) 'jacobian))
;;; This needs work to make matrix automatically allocated.
#+gsl2
(defmfun jacobian (solver matrix)
"gsl_multifit_fdfsolver_jac"
(((mpointer solver) :pointer) ((mpointer matrix) :pointer))
:return (matrix)
:documentation
"The Jacobian matrix for the current iteration of the solver.")
This says that "jacobian" has two arguments when #+gsl2.
(defmfun ls-covariance
(solver relative-error &optional covariance
&aux (cov (or covariance
(grid:make-foreign-array 'double-float
:dimensions
(list (dim1 solver) (dim1 solver))))))
"gsl_multifit_covar"
(((jacobian solver) :pointer) (relative-error :double) ((mpointer cov) :pointer))
...)
This calls "jacobian" with one argument: "(jacobian solver)".
I can't see how a compiler can be fine with this unless it's set up to be quite relaxed.
Alternatively, I might be reading the code wrong.
Cheers,
Gaya