Version 2.2 of the GNU Scientific Library (GSL) is now available. GSL provides a large collection of routines for numerical computing in C.

This release contains new linear algebra routines (Pivoted and Modified Cholesky, Complete Orthogonal Decomposition, matrix condition number estimation) as well as a completely rewritten nonlinear least squares module, including support for Levenberg-Marquardt, dogleg, double-dogleg, and Steihaug-Toint methods.

number for various matrix factorizations:
* gsl_linalg_cholesky_rcond
* gsl_linalg_QRPT_rcond

added functions gsl_linalg_QRPT_{lssolve,lssolve2} to

compute least squares solutions with the QRPT decomposition

added function gsl_permute_matrix()

added modified Cholesky factorization (gsl_linalg_mcholesky)

to handle symmetric indefinite matrices

added pivoted Cholesky factorization (gsl_linalg_pcholesky)

for ill-conditioned matrices

rewrote (real) Cholesky decomposition to use

a Level-2 blas algorithm instead of Level-1. Flop
count is about the same but the code is much simpler
and easier to follow

completely rewritten nonlinear least squares module,

including support for large problems; the user may
now control the linear solver used, the trust region
updating strategy, and the scaling method. In addition,
support has been added for the geodesic acceleration
step (Transtrum 2011) which can speed up convergence
on a wide class of problems.

Version 2.0 of the GNU Scientific Library (GSL) is now available. GSL
provides a large collection of routines for numerical computing in C.
The major version number was increased, since a number of internal
workspaces have changed and so existing binaries must be recompiled
against this new library. There are also a small number of API changes
and deprecated functions.

and does not need to be specified for nonlinear least squares
problems

added extensive test suite to nonlinear least squares module,

resulting in a few minor bug fixes; the routine
gsl_multifit_fdfsolver_driver has been rewritten (with API change)
to handle the various error codes of the lmsder iterate
routine, resulting in a high level caller which is highly robust
for a wide class of problems

added support for sparse matrices, including a GMRES

iterative linear solver

added routines gsl_linalg_givens and gsl_linalg_givens_gv

for Givens rotations

added Tikhonov (ridge) regularization to least squares module

(linear and nonlinear)

removed unused argument 'n' from gsl_sf_ellint_D

merged bspline_deriv_workspace into bspline_workspace to simplify

bspline API; the functions
gsl_bspline_deriv_alloc
gsl_bspline_deriv_free
are now deprecated and will be removed in a future release.

merged ALF extension into GSL for associated Legendre functions;

api has changed; consequently the functions:
gsl_sf_legendre_Plm_array
gsl_sf_legendre_Plm_deriv_array
gsl_sf_legendre_sphPlm_array
gsl_sf_legendre_sphPlm_deriv_array
gsl_sf_legendre_array_size
are now deprecated and will be removed in a future release.

Version 1.14 of the GNU Scientific Library (GSL) is now available. GSL provides a large collection of routines for numerical computing in C.

This is a maintenance release which fixes reported bugs. Support for multisets and fixed order Gauss-Legendre integration has been added and the build system has also been upgraded to the latest automake, autoconf and libtool. (Full details in the NEWS file).

Version 1.13 of the GNU Scientific Library (GSL) is now available. GSL provides a large collection of routines for numerical computing in C.

This is a maintenance release, which fixes reported bugs and upgrades the build system to the latest autoconf and automake. The complete list of changes can be found in the NEWS file. The GSL project homepage is http://www.gnu.org/software/gsl/

GSL is free software distributed under the GNU General Public License version 3.

A new print edition of the GNU Scientific Library Reference Manual is now available (ISBN 0954612078). It is published under the GNU Free Documentation License and covers version 1.12 of the library. The money raised from sales of the manual helps support the development of GSL. [Book details here]

Many distributions are starting to link every application with the GNU Linker's --as-needed flag, to avoid loading libraries that are specified on the command-line but not actually used.

While this is a good thing, it caused a problem for applications using GSL because the main library needs to call an external library for vector operations (BLAS). These BLAS functions are typically not called from the user's object file directly, and they were being discarded by --as-needed causing numerous "unresolved reference" errors. The problem arises because --as-needed does not follow references recursively, except for direct shared library dependencies specified by the ELF DT_NEEDED field (i.e libraries explicitly defined as a dependency in libtool).

In the case of GSL we are not able to specify the dependency on the external library explicitly--we do not know which BLAS library will be used. We want people to be able to choose different BLAS libraries when they link their applications.

Now thanks to Alan Modra there is a enhancement to binutils [1,2] which allows --as-needed to search recursively, ensuring that libraries which are used both directly and indirectly will be linked, and only those with no references at all will be discarded. The next release of binutils should resolve the problems encountered using GSL with --as-needed.

Improved the original chi-squared formula in gsl_monte_vegas to avoid catastrophic cancellation [bug #24510]. The previous formula could return incorrect or negative values for relative errors < 1e-8, which could occur when integrating very smooth functions.

Fixed a bug in gsl_interp_accel_find() where values lying on the upper boundary between interpolation points could return the index from the lower side. [bug #24211]

Fixed gsl_linalg_solve_cyc_tridiag so that its output respects the solution vector's stride. Previously the x_stride value was ignored causing the output to be incorrect for non-unit stride. [bug #24162]

Corrected a bug in the series calculation of gsl_sf_ellint_Kcomp for k close to 1. [bug #24146]

Extended gsl_linalg_QRPT_update to handle rectangular matrices. Corrected definition of the update formula in the manual for both gsl_linalg_QR_update and gsl_linalg_QRPT_update.

Added routine gsl_linalg_cholesky_invert

Fixed a bug the simplex algorithm which caused the second highest point to be incorrectly equal to the first when the first value was the highest, which could cause suboptimal convergence. [bug #23192]

Fixed a problem with convergence for inverse gamma and chisq distribitions, gsl_cdf_gamma_{P,Q}inv and gsl_cdf_chisq_{P,Q}inv. [bug #23101]

Please try it out and report any problems to the bug-gsl AT gnu.org mailing list. Thanks. I've upgraded libtool, autoconf and automake to the latest versions. Other changes from the NEWS file are below.

Improved the original chi-squared formula in gsl_monte_vegas to avoid catastrophic cancellation [bug #24510]. The previous formula could return incorrect or negative values for relative errors < 1e-8, which could occur when integrating very smooth functions.

Fixed a bug in gsl_interp_accel_find() where values lying on the upper boundary between interpolation points could return the index from the lower side. [bug #24211]

Fixed gsl_linalg_solve_cyc_tridiag so that its output respects the solution vector's stride. Previously the x_stride value was ignored causing the output to be incorrect for non-unit stride. [bug #24162]

Corrected a bug in the series calculation of gsl_sf_ellint_Kcomp for k close to 1. [bug #24146]

Extended gsl_linalg_QRPT_update to handle rectangular matrices. Corrected definition of the update formula in the manual for both gsl_linalg_QR_update and gsl_linalg_QRPT_update.

Added routine gsl_linalg_cholesky_invert

Fixed a bug the simplex algorithm which caused the second highest point to be incorrectly equal to the first when the first value was the highest, which could cause suboptimal convergence. [bug #23192]

Fixed a problem with convergence for inverse gamma and chisq distribitions, gsl_cdf_gamma_{P,Q}inv and gsl_cdf_chisq_{P,Q}inv. [bug #23101]

If you are working on changes to a project using Git, such as GSL, it can be useful to make your repository public rather than sending patches.

The usual way to export a git branch involves running git-daemon, webdav or having git installed on the web server. However, it is also possible to export your repository simply by copying the .git directory to a web server. There are some limitations---your whole repository is exported, not just a specific branch, and you must run git-update-server-info each time before copying the files.

Directory index pages need to be enabled the web server---when a git client accesses your repository over http it needs to get a list of the files in each directory. With Apache this requires

You can then copy your repository to the web server:

Run these commands each time you want to export the repository e.g. after making some changes and committing them. Note the trailing slash on .git/ to copy the contents of the directory, rather than the directory itself. Both commands are needed, you can put them together in a script or add the command git-update-server-info to .git/hooks/post-commit and make it executable.

The repository should now be accessible remotely over http:

If you want to work against a remote repository you can copy it as usual to your local machine:

but to save space it is also possible to make a shallow copy:

The git documentation suggests that fetch will not work against a shallow copy, but it seems to work ok in this context.

Release 1.12 of the GNU Scientific Library is planned in the next 1-2 months. The goal is to fix the outstanding bugs in the tracker and to do testing with the latest release of GCC.

This is particularly needed for programs compiled with -std=c99 as the header files have been extended to (hopefully) be compatible with both c89 and c99 with respect to the changes in the inline keyword.