stringtranslate.com

Biblioteca científica GNU

La Biblioteca Científica GNU (o GSL ) es una biblioteca de software para cálculos numéricos en matemáticas y ciencias aplicadas . La GSL está escrita en C ; existen contenedores disponibles para otros lenguajes de programación. La GSL es parte del Proyecto GNU [2] y se distribuye bajo la Licencia Pública General GNU .

Historial del proyecto

El proyecto GSL fue iniciado en 1996 por los físicos Mark Galassi y James Theiler del Laboratorio Nacional de Los Álamos . [3] Su objetivo era escribir un reemplazo moderno para bibliotecas Fortran ampliamente utilizadas pero algo obsoletas como Netlib . [4] Llevaron a cabo el diseño general y escribieron los primeros módulos; con eso listo, 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 llevado a cabo 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 indica la documentación, los encargados del mantenimiento estaban más interesados ​​en la estabilidad que en la funcionalidad adicional. La versión principal 1 finalizó con el lanzamiento de la versión 1.16 de julio de 2013; esta fue la única actividad pública en los tres años 2012-2014.

El desarrollo vigoroso se reanudó 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 2.8 se lanzó 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 ) { doble x = 5.0 ; doble y = gsl_sf_bessel_J0 ( x ); printf ( "J0(%g) = %.18e \n " , x , y ); devolver 0 ; }              

El programa de ejemplo debe vincularse a la biblioteca GSL durante la compilación:

$ gcc $( gsl-config --cflags ) ejemplo.c $( gsl-config --libs )     

La salida se muestra a continuación y debe ser correcta con una precisión doble :

J0(5) = -1,775967713143382920e-01

Características

La biblioteca de software proporciona facilidades para:

Enlaces de lenguajes de programación

Dado que GSL está escrito en C, es sencillo proporcionar contenedores para otros lenguajes de programación. Dichos contenedores existen actualmente para

Compatibilidad con C++

El GSL se puede utilizar en clases de C++ , pero no utilizando punteros a funciones miembro, porque el tipo de puntero a función miembro es diferente del de puntero a función . [23] En su lugar, se deben utilizar punteros a funciones estáticas. Otra solución alternativa común es utilizar un functor .

Hay disponibles contenedores C++ para GSL. [7] [8] [9] [10] No todos ellos reciben mantenimiento regular. Ofrecen acceso a clases de matriz y vector sin tener que usar la interfaz de GSL para malloc y funciones libres . Algunos también ofrecen soporte para crear espacios de trabajo que se comporten como clases de puntero inteligente . Finalmente, existe soporte (limitado, a partir de abril de 2020) para permitir al usuario crear clases para representar una función parametrizada como un functor .

Si bien no son estrictamente envoltorios, hay algunas clases de C++ [24] [25] que permiten a los usuarios de C++ utilizar la biblioteca científica Gnu con funciones de envoltorio.

Véase también

Notas

  1. ^ GPL-3.0 o posterior desde 2007-07-02.
  2. ^ GPL-2.0 o posterior desde el 08-07-1996 hasta el 02-07-2007.

Referencias

  1. ^ "GSL 2.8 lanzado".
  2. ^ "GNU - Directorio de Software Libre".
  3. ^ Página de inicio de abc 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 Archivado el 28 de octubre de 2021 en Wayback Machine .
  7. ^ ab ccgsl: una interfaz C++ para la biblioteca científica GNU;
  8. ^ ab GSL-- Envoltorios de C++ para GSL Archivado el 29 de enero de 2015 en Wayback Machine .
  9. ^ ab GSLwrap: una clase contenedora de C++ para la biblioteca científica GNU;
  10. ^ ab gslcpp: Una biblioteca C++ moderna, de solo encabezado, que envuelve 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 JavaCPP para GSL.
  15. ^ Interfaz de Julia para GSL.
  16. ^ GSLL, Biblioteca científica GNU para Lisp.
  17. ^ gsl-ocaml: enlaces de OCaml a GSL.
  18. ^ Interfaz Python para la biblioteca científica GNU.
  19. ^ RcppGSL: Integración 'Rcpp' para vectores y matrices 'GNU GSL'.
  20. ^ gsl: contenedor para la biblioteca científica Gnu.
  21. ^ rb-gsl: Ruby/GSL es una interfaz de Ruby para la biblioteca científica GNU, para computación numérica con Ruby.
  22. ^ rust-gsl: un enlace de Rust para la biblioteca GSL (la biblioteca científica GNU).
  23. ^ Punteros a funciones miembro. Archivado el 13 de octubre de 2004 en Wayback Machine .
  24. ^ o2scl Biblioteca de Computación Científica Orientada a Objetos;
  25. ^ Sí.

Enlaces externos