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 #include #include +#include + +#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::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)