Articulo de referencia

Biblioteca Científica GNU

1996: [[GNU General Public License|GPL-2.0-or-later]]{{efn|GPL-2.0-or-later from 1996-07-08 until 2007-07-02.}}"},"alexa":{"wt":""},"website":{"wt":"{{URL|https://www.gnu.org/so...

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-01

Características

La biblioteca de software proporciona funcionalidades para:

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

  1. GPL-3.0 o posterior desde el 2 de julio de 2007.
  2. GPL-2.0 o posterior desde el 8 de julio de 1996 hasta el 2 de julio de 2007.

Referencias

  1. Patrick Alken (25 de mayo de 2024). "GSL 2.8 lanzado" . Consultado el 6 de febrero de 2025 .
  2. "GNU - Directorio de Software Libre" .
  3. 1 2 3 Página principal de GSL .
  4. Documento de diseño GSL .
  5. Uso de la biblioteca. Un programa de ejemplo . Documentación de GSL.
  6. Enlaces AMPL para la Biblioteca Científica GNU Archivados el 28/10/2021 en Wayback Machine .
  7. 1 2 ccgsl: una interfaz C++ para la Biblioteca Científica GNU ;
  8. 1 2 GSL-- Envoltorios de C++ para GSL Archivado el 29/01/2015 en Wayback Machine ;
  9. 1 2 GSLwrap: Una clase contenedora de C++ para la biblioteca científica GNU ;
  10. 1 2 gslcpp: Una biblioteca C++ moderna de solo encabezados que encapsula la biblioteca científica GNU .
  11. FGSL - Una interfaz Fortran para la Biblioteca Científica GNU .
  12. El paquete hmatrix-special, una interfaz para funciones especiales de GSL .
  13. El paquete hmatrix-gsl, una interfaz puramente funcional para cálculos numéricos seleccionados, implementada internamente utilizando GSL .
  14. Preajustes de JavaCPP para GSL .
  15. Interfaz de Julia para GSL .
  16. GSLL, Biblioteca Científica GNU para Lisp .
  17. Envoltorio Nim para la biblioteca científica GNU .
  18. gsl-ocaml: Enlaces de OCaml al GSL .
  19. Interfaz de Python para la Biblioteca Científica GNU .
  20. RcppGSL: Integración de 'Rcpp' para vectores y matrices de 'GNU GSL' .
  21. gsl: envoltorio para la biblioteca científica Gnu .
  22. rb-gsl: Ruby/GSL es una interfaz Ruby para la Biblioteca Científica GNU, para computación numérica con Ruby .
  23. rust-gsl: Un enlace de Rust para la biblioteca GSL (la Biblioteca Científica GNU).
  24. Punteros a funciones miembro . Archivado el 13/10/2004 en Wayback Machine .
  25. o2scl Biblioteca de computación científica orientada a objetos ;
  26. yat .
  • 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.
Obtenido de " https://en.wikipedia.org/w/index.php?title=GNU_Scientific_Library&oldid=1358715438 "