Dmitrij S. Kryzhevich 2c8a1bf
diff -urp mathgl-2.3.3/CMakeLists.txt mathgl-2.3.3-gsl2/CMakeLists.txt
Dmitrij S. Kryzhevich 2c8a1bf
--- CMakeLists.txt	2015-06-01 13:29:26.000000000 +0600
Dmitrij S. Kryzhevich 2c8a1bf
+++ CMakeLists.txt	2015-11-24 12:10:43.580786919 +0600
Dmitrij S. Kryzhevich 2c8a1bf
@@ -259,6 +259,13 @@ endif(enable-pthread)
Dmitrij S. Kryzhevich 2c8a1bf
 
Dmitrij S. Kryzhevich 2c8a1bf
 if(enable-gsl)
Dmitrij S. Kryzhevich 2c8a1bf
 	set(MGL_HAVE_GSL 1)
Dmitrij S. Kryzhevich 2c8a1bf
+	FIND_PACKAGE(PkgConfig)
Dmitrij S. Kryzhevich 2c8a1bf
+	pkg_check_modules(GSL2 REQUIRED gsl)
Dmitrij S. Kryzhevich 2c8a1bf
+	if ( GSL2_FOUND )
Dmitrij S. Kryzhevich 2c8a1bf
+		if ( NOT ${GSL2_VERSION} LESS 2.0 )
Dmitrij S. Kryzhevich 2c8a1bf
+			SET(ISGSL2 1)
Dmitrij S. Kryzhevich 2c8a1bf
+		endif ( NOT ${GSL_VERSION} LESS 2.0 )
Dmitrij S. Kryzhevich 2c8a1bf
+	endif ( GSL2_FOUND )
Dmitrij S. Kryzhevich 2c8a1bf
 	find_library(GSL_LIB gsl)
Dmitrij S. Kryzhevich 2c8a1bf
 	find_library(GSL_CBLAS_LIB gslcblas)
Dmitrij S. Kryzhevich 2c8a1bf
 	find_path(GSL_INCLUDE_DIR gsl/gsl_fft_complex.h)
Dmitrij S. Kryzhevich 2c8a1bf
diff -urp mathgl-2.3.3/src/CMakeLists.txt mathgl-2.3.3-gsl2/src/CMakeLists.txt
Dmitrij S. Kryzhevich 2c8a1bf
--- mathgl-2.3.3/src/CMakeLists.txt	2015-06-01 13:29:02.000000000 +0600
Dmitrij S. Kryzhevich 2c8a1bf
+++ mathgl-2.3.3-gsl2/src/CMakeLists.txt	2015-11-24 12:11:14.494707480 +0600
Dmitrij S. Kryzhevich 2c8a1bf
@@ -23,6 +23,9 @@ ${MathGL_BINARY_DIR}/include/mgl2/dllexp
Dmitrij S. Kryzhevich 2c8a1bf
 )
Dmitrij S. Kryzhevich 2c8a1bf
 
Dmitrij S. Kryzhevich 2c8a1bf
 add_definitions(-DMGL_SRC)
Dmitrij S. Kryzhevich 2c8a1bf
+if(DEFINED ISGSL2)
Dmitrij S. Kryzhevich 2c8a1bf
+add_definitions(-DHAVE_GSL_2)
Dmitrij S. Kryzhevich 2c8a1bf
+endif(DEFINED ISGSL2)
Dmitrij S. Kryzhevich 2c8a1bf
 
Dmitrij S. Kryzhevich 2c8a1bf
 if(MGL_HAVE_PNG)
Dmitrij S. Kryzhevich 2c8a1bf
 	set(prc_src prc/PRCbitStream.cc prc/PRCdouble.cc prc/oPRCFile.cc prc/writePRC.cc prc.cpp )
Dmitrij S. Kryzhevich 2c8a1bf
diff -urp mathgl-2.3.3/src/fit.cpp mathgl-2.3.3-gsl2/src/fit.cpp
Dmitrij S. Kryzhevich 2c8a1bf
--- mathgl-2.3.3/src/fit.cpp	2015-06-01 13:29:02.000000000 +0600
Dmitrij S. Kryzhevich 2c8a1bf
+++ mathgl-2.3.3-gsl2/src/fit.cpp	2015-11-24 12:13:39.912670946 +0600
Dmitrij S. Kryzhevich 2c8a1bf
@@ -193,7 +193,14 @@ mreal MGL_NO_EXPORT mgl_fit_base(mglFitD
Dmitrij S. Kryzhevich 2c8a1bf
 	}
Dmitrij S. Kryzhevich 2c8a1bf
 	while ( status == GSL_CONTINUE && iter < 500 );
Dmitrij S. Kryzhevich 2c8a1bf
 	gsl_matrix *covar = gsl_matrix_alloc(m, m);
Dmitrij S. Kryzhevich 2c8a1bf
+#ifdef HAVE_GSL_2
Dmitrij S. Kryzhevich 2c8a1bf
+	gsl_matrix *J = gsl_matrix_alloc(s->fdf->n, s->fdf->p);
Dmitrij S. Kryzhevich 2c8a1bf
+	gsl_multifit_fdfsolver_jac(s, J);
Dmitrij S. Kryzhevich 2c8a1bf
+	gsl_multifit_covar (J, 0.0, covar);
Dmitrij S. Kryzhevich 2c8a1bf
+	gsl_matrix_free (J);
Dmitrij S. Kryzhevich 2c8a1bf
+#else
Dmitrij S. Kryzhevich 2c8a1bf
 	gsl_multifit_covar (s->J, 0.0, covar );
Dmitrij S. Kryzhevich 2c8a1bf
+#endif
Dmitrij S. Kryzhevich 2c8a1bf
 	mglFitCovar.Set(covar);
Dmitrij S. Kryzhevich 2c8a1bf
 	mreal res = gsl_blas_dnrm2(s->f);
Dmitrij S. Kryzhevich 2c8a1bf
 	for(i=0;i<m;i++)	ini[i] = gsl_vector_get(s->x, i);