miniaturadaimagem|Arquivo Leiame do GNUMATH, uma Biblioteca de Matemática Numérica também conhecida como GNU Scientific Software Library (gnussl), seu nome oficial. A Biblioteca Científica GNU (em inglês GNU Scientific Library ou GSL) é uma biblioteca de software para cálculos numéricos em matemática aplicada e ciências. A GSL é escrita em C ; wrappers estão disponíveis para outras linguagens de programação. A GSL faz parte do Projeto GNU e é distribuída sob a GNU General Public License.

Histórico do projeto O projeto GSL foi iniciado em 1996 pelos físicos Mark Galassi e James Theiler do Los Alamos National Laboratory.GSL homepage. Eles pretendiam escrever um substituto moderno para bibliotecas Fortran amplamente usadas, mas um tanto desatualizadas, como Netlib.GSL design document. Eles realizaram o projeto geral e escreveram os primeiros módulos; com isso pronto recrutaram outros cientistas para contribuir.

O "desenvolvimento geral da biblioteca e o design e implementação dos principais módulos" foram realizados por Brian Gough e Gerard Jungman.GSL homepage. Outros contribuidores importantes foram Jim Davies, Reid Priedhorsky, M. Booth e F. Rossi.

A versão 1.0 foi lançada em 2001. Nos anos seguintes, a biblioteca expandiu-se lentamente; como afirma a documentação, os mantenedores estavam mais interessados em estabilidade do que em funcionalidade adicional. A versão principal 1 terminou com o lançamento 1.16 de julho de 2013; esta foi a única atividade pública nos três anos de 2012–2014.

O desenvolvimento vigoroso foi retomado com a publicação da versão 2.0 em outubro de 2015. A última versão 2.7 foi lançada em junho de 2021.

Exemplo O programa de exemplo a seguir calcula o valor da função de Bessel para 5:Using the Library. #include <stdio.h> #include <gsl/gsl_sf_bessel.h>

int main(void) { double x = 5.0; double y = gsl_sf_bessel_J0(x); printf("J0(%g) = %.18e\n", x, y); return 0; }O programa de exemplo deve ser vinculado à biblioteca GSL durante a compilação :gcc $(gsl-config --cflags) example.c $(gsl-config --libs)A saída é mostrada abaixo e deve estar correta para precisão de dupla precisão: J0(5) = -1,775967713143382920e-01

Recursos A biblioteca de software fornece recursos para :

Vinculações de linguagem de programação Como a GSL é escrita em C, é fácil fornecer wrappers para outras linguagens de programação. Esses wrappers existem atualmente para

AMPLAMPL bindings for the GNU Scientific Library. C++ccgsl: a C++ interface for the GNU Scientific Library; GSL-- C++ wrappers for GSL ;GSLwrap: A C++ wrapper class for the GNU Scientific Library;gslcpp: A Header-Only, Modern C++-Library Wrapping the GNU Scientific Library. FortranFGSL - A Fortran interface to the GNU Scientific Library. HaskellThe hmatrix-special package, an interface to GSL special functions.The hmatrix-gsl package, a purely functional interface to selected numerical computations, internally implemented using GSL. JavaJavaCPP Presets for GSL. JúliaJulia interface to GSL. Lisp comumGSLL, GNU Scientific Library for Lisp. Ocamlgsl-ocaml: OCaml bindings to the GSL. Oitava Linguagem de Dados Perl PythonPython interface for GNU Scientific Library. RRcppGSL: 'Rcpp' Integration for 'GNU GSL' Vectors and Matrices.gsl: wrapper for the Gnu Scientific Library. Rubirb-gsl: Ruby/GSL is a Ruby interface to the GNU Scientific Library, for numerical computing with Ruby. ferrugemrust-gsl: A Rust binding for the GSL library (the GNU Scientific Library).

Suporte a C++ A GSL pode ser usada em classes C++, mas não usando ponteiros para funções de membro, porque o tipo de ponteiro para função de membro é diferente de ponteiro para função.Pointers to member functions. Em vez disso, ponteiros para funções estáticas devem ser usados. Outra solução comum é usar um functor.

Estão disponíveis wrappers C++ para GSL.ccgsl: a C++ interface for the GNU Scientific Library; GSL-- C++ wrappers for GSL ;GSLwrap: A C++ wrapper class for the GNU Scientific Library;gslcpp: A Header-Only, Modern C++-Library Wrapping the GNU Scientific Library. Nem todos estes são mantidos regularmente. Eles oferecem acesso a classes de vetores e matrizes sem ter que usar a interface GSL para funções malloc e free. Alguns também oferecem suporte para a criação de áreas de trabalho que se comportam como classes de ponteiro inteligente. Por fim, há suporte (limitado, a partir de abril de 2020) para permitir que o usuário crie classes para representar uma função parametrizada como um functor.

Embora não sejam estritamente wrappers, existem algumas classes C++ o2scl Object-oriented Scientific Computing Library; yat. que permitem aos usuários de C++ usar a Gnu Scientific Library com recursos de wrapper.

Referências

Ligações externas

GSL Design Document The gsl package for R (programming language), an R wrapper for the special functions and quasi random number generators. FLOSS FOR SCIENCE interview with Mark Galassi on the history of GSL.

Categoria:Bibliotecas de matemática Categoria:Software do Projeto GNU Categoria:Software livre programado em C Categoria:Bibliotecas para C