Blob Blame History Raw
diff --git orsa-0.7.0/src/liborsa/orsa_orbit_gsl.cc~ orsa-0.7.0/src/liborsa/orsa_orbit_gsl.cc
index 8596890618..7be5e9c9ca 100644
--- orsa-0.7.0/src/liborsa/orsa_orbit_gsl.cc~
+++ orsa-0.7.0/src/liborsa/orsa_orbit_gsl.cc
@@ -45,6 +45,25 @@
 #include <gsl/gsl_cblas.h>
 #include <gsl/gsl_randist.h>
 #include <gsl/gsl_eigen.h>
+#include <gsl/gsl_version.h>
+
+#if GSL_MAJOR_VERSION >= 2
+#define GSL_INT_PRI "zi"
+
+static void multifit_covar(gsl_multifit_fdfsolver *s, gsl_matrix *covar) {
+      gsl_matrix *J=0;
+      gsl_multifit_fdfsolver_jac (s, J);
+      gsl_multifit_covar (J, 0.0, covar);
+}
+
+#else
+#define GSL_INT_PRI "i"
+
+static void multifit_covar(gsl_multifit_fdfsolver *s, gsl_matrix *covar) {
+      gsl_multifit_covar(s->J,0.0,covar);
+}
+
+#endif
 
 #include "orsa_file.h"
 #include "orsa_error.h"
@@ -1002,7 +1021,7 @@ namespace orsa {
 	gsl_deriv_central(&diff_f, gsl_vector_get(v,j), gsl_vector_get(v,j)*1.0e4*std::numeric_limits<double>::epsilon(), &result, &abserr);
 	gsl_matrix_set (J, i, j, result);  
 	//
-	fprintf(stderr,"[lim]diff[%03i][%i] = %20f +/- %20f at %20.12f\n",
+	fprintf(stderr,"[lim]diff[%03" GSL_INT_PRI "][%" GSL_INT_PRI "] = %20f +/- %20f at %20.12f\n",
 		i,j,result,abserr,gsl_vector_get(v,j));
 	
 	// }
@@ -1102,7 +1121,7 @@ namespace orsa {
       
       { 
 	gsl_matrix * covar = gsl_matrix_alloc(6,6);
-	gsl_multifit_covar(s->J,0.0,covar);
+	multifit_covar(s, covar);
 	printf ("more info:\n"
 		"a    = %12.6f +/- %12.6f\n"
 		"e    = %12.6f +/- %12.6f\n"
@@ -1113,13 +1132,13 @@ namespace orsa {
 		gsl_vector_get(s->x,2)*(180/pi),sqrt(gsl_matrix_get(covar,2,2))*(180/pi));
       }
       
-      gsl_multifit_covar(s->J,0.0,par.covar);
+      multifit_covar(s, par.covar);
       par.use_covar = true;
       
     } while ((status == GSL_CONTINUE) && (iter < 1024));
     
     gsl_matrix * covar = gsl_matrix_alloc(6,6);
-    gsl_multifit_covar(s->J,0.0,covar);
+    multifit_covar(s, covar);
     // gsl_matrix_fprintf(stdout, covar,"%g");
     
 #define FIT(i) gsl_vector_get(s->x, i)