diff options
Diffstat (limited to 'academic/root/root_gsl2.patch')
-rw-r--r-- | academic/root/root_gsl2.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/academic/root/root_gsl2.patch b/academic/root/root_gsl2.patch new file mode 100644 index 0000000000..8f049d7e03 --- /dev/null +++ b/academic/root/root_gsl2.patch @@ -0,0 +1,42 @@ +diff -u -r root/math/mathmore/src/GSLMultiFit.h root-patched/math/mathmore/src/GSLMultiFit.h +--- root/math/mathmore/src/GSLMultiFit.h 2015-06-23 16:56:20.000000000 +0100 ++++ root-patched/math/mathmore/src/GSLMultiFit.h 2015-11-18 22:30:54.300681289 +0000 +@@ -32,6 +32,7 @@ + #include "gsl/gsl_multifit_nlin.h" + #include "gsl/gsl_blas.h" + #include "GSLMultiFitFunctionWrapper.h" ++#include <gsl/gsl_version.h> + + #include "Math/IFunction.h" + #include <string> +@@ -139,7 +140,14 @@ + /// gradient value at the minimum + const double * Gradient() const { + if (fSolver == 0) return 0; +- gsl_multifit_gradient(fSolver->J, fSolver->f,fVec); ++#if GSL_MAJOR_VERSION >=2 ++ gsl_matrix *J=gsl_matrix_alloc(fSolver->fdf->n, fSolver->fdf->p); ++ gsl_multifit_fdfsolver_jac (fSolver, J); ++ gsl_multifit_gradient(J, fSolver->f, fVec); ++ gsl_matrix_free(J); ++#else ++ gsl_multifit_gradient(fSolver->J, fSolver->f, fVec); ++#endif + return fVec->data; + } + +@@ -150,7 +158,14 @@ + unsigned int npar = fSolver->fdf->p; + fCov = gsl_matrix_alloc( npar, npar ); + static double kEpsrel = 0.0001; ++#if GSL_MAJOR_VERSION >=2 ++ gsl_matrix *J=gsl_matrix_alloc(fSolver->fdf->n, fSolver->fdf->p); ++ gsl_multifit_fdfsolver_jac (fSolver, J); ++ int ret = gsl_multifit_covar(J, kEpsrel, fCov); ++ gsl_matrix_free(J); ++#else + int ret = gsl_multifit_covar(fSolver->J, kEpsrel, fCov); ++#endif + if (ret != GSL_SUCCESS) return 0; + return fCov->data; + } |