[med-svn] [aghermann] 09/14: build with gsl-2.0 if found, supporting gsl-1.6

andrei zavada hmmr-guest at moszumanska.debian.org
Sat Jan 30 18:16:02 UTC 2016


This is an automated email from the git hooks/post-receive script.

hmmr-guest pushed a commit to branch WIP
in repository aghermann.

commit 0dc94a334ae373831b760c617995ab3acce18533
Author: Andrei Zavada <hmmr at frdg>
Date:   Fri Dec 11 00:42:37 2015 +0000

    build with gsl-2.0 if found, supporting gsl-1.6
---
 upstream/ChangeLog                      |  3 +-
 upstream/configure.ac                   |  2 ++
 upstream/src/aghermann/model/borbely.cc | 60 +++++++++++++++------------------
 3 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/upstream/ChangeLog b/upstream/ChangeLog
index 36a2d1f..94b809f 100644
--- a/upstream/ChangeLog
+++ b/upstream/ChangeLog
@@ -1,7 +1,8 @@
-v.1.0.7 (2015-11-21)
+v.1.0.7 (2015-12-11)
 	* Fix: Ensure profile overview timeline is at least 1h long.
 	* Fix: Correctly identify channels by a matching prefix (like
 	  "F3-AV"); also rework data structures in libsigfile/channel.*.
+	* New: Support building with gsl-2.0.
 
 v.1.0.6 (2015-08-13)
 	* Fix: Make widgets reappear on Empty Experiment splash.
diff --git a/upstream/configure.ac b/upstream/configure.ac
index dbfe2cd..65f350a 100644
--- a/upstream/configure.ac
+++ b/upstream/configure.ac
@@ -67,6 +67,8 @@ PKG_CHECK_MODULES([CAIRO], [cairo >= 1.8.10])
 PKG_CHECK_MODULES([UNIQUE], [unique-3.0])
 PKG_CHECK_MODULES([VTE], [vte-2.91])
 
+AX_PATH_GSL([2.0], [AC_DEFINE([HAVE_GSL_20], [], [we have gsl >= 2.0])], [])
+
 AC_CHECK_LIB(
 	fftw3_omp, fftw_init_threads,
 	[AC_DEFINE([HAVE_LIBFFTW3_OMP], [], [we have fftw3 omp-enabled])
diff --git a/upstream/src/aghermann/model/borbely.cc b/upstream/src/aghermann/model/borbely.cc
index 04d0ded..b6b5fd8 100644
--- a/upstream/src/aghermann/model/borbely.cc
+++ b/upstream/src/aghermann/model/borbely.cc
@@ -85,16 +85,6 @@ expb_fdf( const gsl_vector* x, void *data,
         return GSL_SUCCESS;
 }
 
-
-void
-print_state( size_t iter, gsl_multifit_fdfsolver* s)
-{
-        APPLOG_DEBUG ("iter: %3zu x = % 15.8f |f(x)| = %g",
-                      iter,
-                      gsl_vector_get (s->x, 0),
-                      gsl_blas_dnrm2 (s->f));
-}
-
 } // namespace
 
 agh::beersma::SClassicFit
@@ -155,14 +145,28 @@ classic_fit( agh::CRecording& M,
                         pp, 1);
         gsl_multifit_fdfsolver_set( S, &F, &X.vector);
 
-      // find it
-        int status;
+#ifdef HAVE_GSL_20
+        const double xtol = 1e-8;
+        const double gtol = 1e-8;
+        const double ftol = 0.0;
+
+        int info;
+        gsl_multifit_fdfsolver_driver(S, 20, xtol, gtol, ftol, &info);
+
+        gsl_matrix *J = gsl_matrix_alloc(pp, 1);
+        gsl_multifit_fdfsolver_jac(S, J);
+        gsl_multifit_covar( J, 0.0, covar);
+
+        gsl_matrix_free (J);
+
+#else  // HAVE_GSL_16
         unsigned int iter = 0;
+        int status;
+
         do {
                 ++iter;
                 status = gsl_multifit_fdfsolver_iterate( S);
 
-                print_state( iter, S);
                 if ( status ) {
                         APPLOG_WARN ("status = %s", gsl_strerror( status));
                         break;
@@ -174,18 +178,18 @@ classic_fit( agh::CRecording& M,
 
         gsl_multifit_covar( S->J, 0.0, covar);
 
-#define FIT(i) gsl_vector_get( S->x, i)
-#define ERR(i) sqrt(gsl_matrix_get( covar, i, i))
-        {
-                double chi = gsl_blas_dnrm2(S->f);
-                double dof = pp - 1;
-                double c = GSL_MAX_DBL(1, chi / sqrt(dof));
-
-                APPLOG_DEBUG ("chisq/dof = %g",  gsl_pow_2(chi) / dof);
-                APPLOG_DEBUG ("r = %.5f +/- %.5f", FIT(0), c*ERR(0));
-        }
+// #define FIT(i) gsl_vector_get( S->x, i)
+// #define ERR(i) sqrt(gsl_matrix_get( covar, i, i))
+//         {
+//                 double chi = gsl_blas_dnrm2(S->f);
+//                 double dof = pp - 1;
+//                 double c = GSL_MAX_DBL(1, chi / sqrt(dof));
 
-        double  rate = gsl_vector_get( S->x, 0);
+//                 APPLOG_DEBUG ("chisq/dof = %g",  gsl_pow_2(chi) / dof);
+//                 APPLOG_DEBUG ("r = %.5f +/- %.5f", FIT(0), c*ERR(0));
+//         }
+#endif
+        const double  rate = gsl_vector_get( S->x, 0);
 
         gsl_multifit_fdfsolver_free( S);
         gsl_matrix_free( covar);
@@ -193,11 +197,3 @@ classic_fit( agh::CRecording& M,
         return {rate};
 
 }
-
-
-// Local Variables:
-// Mode: c++
-// indent-tabs-mode: nil
-// tab-width: 8
-// c-basic-offset: 8
-// End:

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/aghermann.git



More information about the debian-med-commit mailing list