La Biblioteca Científica GNU (o GSL ) es una biblioteca de software para cálculos numéricos en matemáticas aplicadas y ciencias . La GSL está escrita en C ; existen adaptadores para otros lenguajes de programación. La GSL forma parte del Proyecto GNU [ 2 ] y se distribuye bajo la Licencia Pública General GNU .
Historia del proyecto
El proyecto GSL fue iniciado en 1996 por los físicos Mark Galassi y James Theiler del Laboratorio Nacional de Los Alamos . [ 3 ] Su objetivo era escribir un reemplazo moderno para las bibliotecas Fortran ampliamente utilizadas pero algo desactualizadas , como Netlib . [ 4 ] Llevaron a cabo el diseño general y escribieron los primeros módulos; una vez listos, reclutaron a otros científicos para que contribuyeran.
El "desarrollo general de la biblioteca y el diseño e implementación de los módulos principales" fue realizado por Brian Gough y Gerard Jungman. [ 3 ] Otros colaboradores importantes fueron Jim Davies , Reid Priedhorsky, M. Booth y F. Rossi. [ 3 ]
La versión 1.0 se publicó en 2001. En los años siguientes, la biblioteca se expandió lentamente; como se indicaba en la documentación, los responsables del mantenimiento priorizaron la estabilidad sobre la funcionalidad adicional. La versión principal 1 finalizó con la publicación de la versión 1.16 en julio de 2013; esta fue la única actividad pública durante el período 2012-2014.
El desarrollo se reanudó con fuerza con la publicación de la versión 2.0 en octubre de 2015, que incluía parches aportados por los usuarios. La última versión, la 2.8, se publicó en mayo de 2024.
Ejemplo
El siguiente programa de ejemplo calcula el valor de la función de Bessel de primer tipo y orden cero para 5: [ 5 ]
#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 ; }El programa de ejemplo debe vincularse a la biblioteca GSL durante la compilación:
$ gcc $( gsl-config --cflags ) example.c $( gsl-config --libs )El resultado se muestra a continuación y debería ser correcto con una precisión de doble exactitud :
J0(5) = -1,775967713143382920e-01Características
La biblioteca de software proporciona funcionalidades para:
- funciones matemáticas básicas
- Números complejos
- Polinomios
- B-splines
- Funciones especiales
- Vectores y matrices
- Permutaciones
- Combinaciones
- Multiconjuntos
- Clasificación
- BLAS
- Álgebra lineal
- Sistemas propios
- transformadas rápidas de Fourier
- Integración numérica (basada en QUADPACK )
- generación de números aleatorios
- Secuencias cuasialeatorias
- Distribuciones de números aleatorios
- Estadística
- Histogramas
- N-tuplas
- Integración de Monte Carlo
- Recocido simulado
- Ecuaciones diferenciales ordinarias
- Interpolación
- Diferenciación numérica
- aproximaciones de Chebyshev
- Aceleración en serie
- Transformada discreta de Hankel
- Búsqueda de raíces en una y varias dimensiones.
- Minimización en una y varias dimensiones
- Ajuste por mínimos cuadrados
- Ajuste de mínimos cuadrados no lineales
- constantes físicas
- aritmética de punto flotante IEEE
- Transformada discreta de ondículas
Enlaces de lenguajes de programación
Dado que el GSL está escrito en C, es sencillo proporcionar adaptadores para otros lenguajes de programación. Dichos adaptadores ya existen para
Compatibilidad con C++
El GSL se puede usar en clases de C++ , pero no usando punteros a funciones miembro, porque el tipo de puntero a función miembro es diferente de puntero a función . [ 24 ] En su lugar, se deben usar punteros a funciones estáticas. Otra solución común es usar un functor .
Existen envoltorios de C++ para GSL. [ 7 ] [ 8 ] [ 9 ] [ 10 ] No todos se mantienen regularmente. Ofrecen acceso a clases de matrices y vectores sin tener que usar la interfaz de GSL para las funciones malloc y free . Algunos también ofrecen soporte para crear espacios de trabajo que se comportan como clases de punteros inteligentes . Finalmente, existe soporte (limitado, a partir de abril de 2020) para permitir al usuario crear clases que representen una función parametrizada como un functor .
Aunque no son estrictamente envoltorios, hay algunas clases de C++ [ 25 ] [ 26 ] que permiten a los usuarios de C++ utilizar la Biblioteca Científica Gnu con características de envoltorio.
Véase también
Notas
Referencias
- ↑ Patrick Alken (25 de mayo de 2024). "GSL 2.8 lanzado" . Consultado el 6 de febrero de 2025 .
- ↑ "GNU - Directorio de Software Libre" .
- 1 2 3 Página principal de GSL .
- ↑ Documento de diseño GSL .
- ↑ Uso de la biblioteca. Un programa de ejemplo . Documentación de GSL.
- ↑ Enlaces AMPL para la Biblioteca Científica GNU Archivados el 28/10/2021 en Wayback Machine .
- 1 2 ccgsl: una interfaz C++ para la Biblioteca Científica GNU ;
- 1 2 GSL-- Envoltorios de C++ para GSL Archivado el 29/01/2015 en Wayback Machine ;
- 1 2 GSLwrap: Una clase contenedora de C++ para la biblioteca científica GNU ;
- 1 2 gslcpp: Una biblioteca C++ moderna de solo encabezados que encapsula la biblioteca científica GNU .
- ↑ FGSL - Una interfaz Fortran para la Biblioteca Científica GNU .
- ↑ El paquete hmatrix-special, una interfaz para funciones especiales de GSL .
- ↑ El paquete hmatrix-gsl, una interfaz puramente funcional para cálculos numéricos seleccionados, implementada internamente utilizando GSL .
- ↑ Preajustes de JavaCPP para GSL .
- ↑ Interfaz de Julia para GSL .
- ↑ GSLL, Biblioteca Científica GNU para Lisp .
- ↑ Envoltorio Nim para la biblioteca científica GNU .
- ↑ gsl-ocaml: Enlaces de OCaml al GSL .
- ↑ Interfaz de Python para la Biblioteca Científica GNU .
- ↑ RcppGSL: Integración de 'Rcpp' para vectores y matrices de 'GNU GSL' .
- ↑ gsl: envoltorio para la biblioteca científica Gnu .
- ↑ rb-gsl: Ruby/GSL es una interfaz Ruby para la Biblioteca Científica GNU, para computación numérica con Ruby .
- ↑ rust-gsl: Un enlace de Rust para la biblioteca GSL (la Biblioteca Científica GNU).
- ↑ Punteros a funciones miembro . Archivado el 13/10/2004 en Wayback Machine .
- ↑ o2scl Biblioteca de computación científica orientada a objetos ;
- ↑ yat .
Enlaces externos
- Sitio web oficial
- Documento de diseño de GSL
- El paquete gsl para R (lenguaje de programación) , una interfaz para R que permite el uso de funciones especiales y generadores de números cuasi aleatorios.
- Entrevista de FLOSS FOR SCIENCE con Mark Galassi sobre la historia de GSL.
- Bibliotecas de C (lenguaje de programación)
- Bibliotecas informáticas gratuitas
- Software libre programado en C
- Software del Proyecto GNU
- Bibliotecas matemáticas
- Bibliotecas numéricas
- Software numérico
- Software que utiliza la Licencia Pública General de GNU.