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 . El GSL está escrito en C ; Hay contenedores disponibles para otros lenguajes de programación. El GSL es 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 Álamos . [3] Su objetivo era escribir un reemplazo moderno para las 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.

Brian Gough y Gerard Jungman llevaron a cabo "el desarrollo general de la biblioteca y el diseño e implementación de los módulos principales". [3] Otros contribuyentes importantes fueron Jim Davies , Reid Priedhorsky, M. Booth y F. Rossi. [3]

La versión 1.0 se lanzó en 2001. En los años siguientes, la biblioteca se expandió lentamente; Como indica la documentación, los mantenedores estaban más interesados ​​en la estabilidad que en la funcionalidad adicional. La versión principal 1 finalizó con 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. La última versión 2.7 se lanzó en junio de 2021.

Ejemplo

El siguiente programa de ejemplo calcula el valor de la función de Bessel de primer tipo y orden cero para 5: [5]

#incluir <stdio.h> #incluir <gsl/gsl_sf_bessel.h>  int principal ( vacío ) { 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 estar vinculado a la biblioteca GSL tras la compilación:

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

El resultado se muestra a continuación y debe ser correcto con una precisión de doble precisión :

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

Características

La biblioteca de software proporciona instalaciones para:

Enlaces de lenguaje de programación

Dado que GSL está escrito en C, es sencillo proporcionar contenedores para otros lenguajes de programación. Actualmente existen envoltorios de este tipo para

Soporte 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 del puntero a función . [23] En su lugar, se deben utilizar punteros a funciones estáticas. Otra solución común es utilizar un funtor .

Hay disponibles contenedores C++ para GSL. [7] [8] [9] [10] No todos reciben mantenimiento regular. Ofrecen acceso a clases matriciales y vectoriales sin tener que utilizar la interfaz de GSL para malloc y funciones gratuitas . Algunos también ofrecen soporte para crear espacios de trabajo que se comportan 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 funtor .

Si bien no son estrictamente contenedores, existen algunas clases de C++ [24] [25] que permiten a los usuarios de C++ utilizar la Biblioteca científica Gnu con funciones contenedoras.

Ver 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. ^ "lanzamiento 2.7.1 para corregir los números de versión de libtool".
  2. ^ "GNU - Directorio de software libre".
  3. ^ Página de inicio de abc GSL.
  4. ^ Documento de diseño GSL.
  5. ^ Usando la biblioteca. Un programa de ejemplo. Documentación GSL.
  6. ^ Enlaces AMPL para la biblioteca científica GNU.
  7. ^ ab ccgsl: una interfaz C++ para la biblioteca científica GNU;
  8. ^ ab GSL-- Envoltorios 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 mediante GSL.
  14. ^ Ajustes preestablecidos de 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 de la biblioteca científica Gnu.
  21. ^ rb-gsl: Ruby/GSL es una interfaz 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. ^ Consejos para las funciones de los miembros. Archivado el 13 de octubre de 2004 en Wayback Machine .
  24. ^ Biblioteca de informática científica orientada a objetos o2scl;
  25. ^ ya.

enlaces externos