1 #ifndef _GLOBALGSLFUNCS_H_
2 #define _GLOBALGSLFUNCS_H_
6 int fGsl(
const gsl_vector *
x,
void *data, gsl_vector *
f) {
8 unsigned int n = residFuncPtr->
getN(), p = residFuncPtr->
getP(), i;
9 HepVector xHep(p), fHep(n);
10 for (i = 0; i < p; i++) xHep(i + 1) = gsl_vector_get(x, (
size_t)i);
12 residFuncPtr->
resid(&xHep, data, &fHep);
14 for (i = 0; i < n; i++) gsl_vector_set(f, (
size_t)i, fHep(i + 1));
18 int dfGsl(
const gsl_vector *
x,
void *data, gsl_matrix *J){
20 int n = residFuncPtr->
getN(), p = residFuncPtr->
getP();
24 for (i = 0; i < p; i++) xHep(i + 1) = gsl_vector_get(x, (
size_t)i);
26 residFuncPtr->
deriv(&xHep, data, &JHep);
28 for (i = 0; i < n; i++) {
29 for (j = 0; j < p; j++) {
30 gsl_matrix_set(J, (
size_t)i, (
size_t)j, JHep(i + 1, j + 1));
36 int fdfGsl(
const gsl_vector *
x,
void *data, gsl_vector *
f, gsl_matrix *J){
43 #endif // _GLOBALGSLFUNCS_H_
virtual void deriv(const HepVector *x, void *data, HepMatrix *J)=0
virtual unsigned int getP()=0
virtual unsigned int getN()=0
int fGsl(const gsl_vector *x, void *data, gsl_vector *f)
int fdfGsl(const gsl_vector *x, void *data, gsl_vector *f, gsl_matrix *J)
virtual void resid(const HepVector *x, void *data, HepVector *f)=0
int dfGsl(const gsl_vector *x, void *data, gsl_matrix *J)