8c99ed5982
This release introduces some new features and fixes several bugs: http://savannah.gnu.org/forum/forum.php?forum_id=8751 * update to 2.3 and take maintainership * update math/py-gsl to 2.2.0 for gsl2 support * update math/rubygem-rb-gsl to 2.1.0.2 for gsl2 support PR: 218952 Exp-run by: antoine Reviewed by: mat, rakuco Approved by: rakuco (mentor) Differential Revision: https://reviews.freebsd.org/D10522
106 lines
3.3 KiB
Text
106 lines
3.3 KiB
Text
Backport of:
|
|
https://github.com/Kst-plot/kst/commit/a9d24f91057441bbd2e3ed9e7536b071121526cb
|
|
|
|
From a9d24f91057441bbd2e3ed9e7536b071121526cb Mon Sep 17 00:00:00 2001
|
|
From: "D. V. Wiebe" <dvw@ketiltrout.net>
|
|
Date: Thu, 10 Mar 2016 14:09:26 -0800
|
|
Subject: [PATCH] GSL-2.x support.
|
|
|
|
|
|
--- src/plugins/fits/non_linear.h.orig 2014-02-13 09:41:44 UTC
|
|
+++ src/plugins/fits/non_linear.h
|
|
@@ -18,6 +18,7 @@
|
|
#include <gsl/gsl_blas.h>
|
|
#include <gsl/gsl_multifit_nlin.h>
|
|
#include <gsl/gsl_statistics.h>
|
|
+#include <gsl/gsl_version.h>
|
|
#include "common.h"
|
|
|
|
struct data {
|
|
@@ -100,6 +101,7 @@ bool kstfit_nonlinear(
|
|
gsl_multifit_function_fdf function;
|
|
gsl_vector_view vectorViewInitial;
|
|
gsl_matrix* pMatrixCovariance;
|
|
+ gsl_matrix* pMatrixJacobian;
|
|
struct data d;
|
|
double dXInitial[NUM_PARAMS];
|
|
double* pInputX;
|
|
@@ -177,7 +179,16 @@ bool kstfit_nonlinear(
|
|
}
|
|
iIterations++;
|
|
} while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS );
|
|
- gsl_multifit_covar( pSolver->J, 0.0, pMatrixCovariance );
|
|
+#if GSL_MAJOR_VERSION >= 2
|
|
+ pMatrixJacobian = gsl_matrix_alloc( iLength, NUM_PARAMS );
|
|
+#else
|
|
+ pMatrixJacobian = pSolver->J;
|
|
+#endif
|
|
+ if ( pMatrixJacobian != NULL ) {
|
|
+#if GSL_MAJOR_VERSION >= 2
|
|
+ gsl_multifit_fdfsolver_jac( pSolver, pMatrixJacobian );
|
|
+#endif
|
|
+ gsl_multifit_covar( pMatrixJacobian, 0.0, pMatrixCovariance );
|
|
|
|
//
|
|
// determine the fitted values...
|
|
@@ -207,7 +218,10 @@ bool kstfit_nonlinear(
|
|
scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f ));
|
|
|
|
bReturn = true;
|
|
-
|
|
+#if GSL_MAJOR_VERSION >= 2
|
|
+ gsl_matrix_free( pMatrixJacobian );
|
|
+#endif
|
|
+ }
|
|
gsl_matrix_free( pMatrixCovariance );
|
|
}
|
|
gsl_multifit_fdfsolver_free( pSolver );
|
|
--- src/plugins/fits/non_linear_weighted.h.orig 2014-02-13 09:41:44 UTC
|
|
+++ src/plugins/fits/non_linear_weighted.h
|
|
@@ -18,6 +18,7 @@
|
|
#include <gsl/gsl_blas.h>
|
|
#include <gsl/gsl_multifit_nlin.h>
|
|
#include <gsl/gsl_statistics.h>
|
|
+#include <gsl/gsl_version.h>
|
|
#include "common.h"
|
|
|
|
struct data {
|
|
@@ -101,6 +102,7 @@ bool kstfit_nonlinear_weighted(
|
|
gsl_multifit_function_fdf function;
|
|
gsl_vector_view vectorViewInitial;
|
|
gsl_matrix* pMatrixCovariance;
|
|
+ gsl_matrix* pMatrixJacobian;
|
|
struct data d;
|
|
double dXInitial[NUM_PARAMS];
|
|
double* pInputs[3];
|
|
@@ -193,7 +195,17 @@ bool kstfit_nonlinear_weighted(
|
|
}
|
|
while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS );
|
|
|
|
- gsl_multifit_covar( pSolver->J, 0.0, pMatrixCovariance );
|
|
+#if GSL_MAJOR_VERSION >= 2
|
|
+ pMatrixJacobian = gsl_matrix_alloc( iLength, NUM_PARAMS );
|
|
+#else
|
|
+ pMatrixJacobian = pSolver->J;
|
|
+#endif
|
|
+
|
|
+ if ( pMatrixJacobian != NULL ) {
|
|
+#if GSL_MAJOR_VERSION >= 2
|
|
+ gsl_multifit_fdfsolver_jac( pSolver, pMatrixJacobian );
|
|
+#endif
|
|
+ gsl_multifit_covar( pMatrixJacobian, 0.0, pMatrixCovariance );
|
|
|
|
//
|
|
// determine the fitted values...
|
|
@@ -223,7 +235,10 @@ bool kstfit_nonlinear_weighted(
|
|
scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f ));
|
|
|
|
bReturn = true;
|
|
-
|
|
+#if GSL_VERSION_MAJOR >= 2
|
|
+ gsl_matrix_free( pMatrixJacobian );
|
|
+#endif
|
|
+ }
|
|
gsl_matrix_free( pMatrixCovariance );
|
|
}
|
|
gsl_multifit_fdfsolver_free( pSolver );
|