stringtranslate.com

Научная библиотека GNU

GNU Scientific Library (или GSL ) — это программная библиотека для численных вычислений в прикладной математике и науке . GSL написана на языке C ; доступны оболочки для других языков программирования. GSL является частью проекта GNU [2] и распространяется по лицензии GNU General Public License .

История проекта

Проект GSL был инициирован в 1996 году физиками Марком Галасси и Джеймсом Тейлером из Лос-Аламосской национальной лаборатории . [3] Они стремились написать современную замену широко используемым, но несколько устаревшим библиотекам Fortran , таким как Netlib . [4] Они выполнили общую разработку и написали первые модули; когда все было готово, они привлекли других ученых для участия.

«Общая разработка библиотеки, а также проектирование и реализация основных модулей» были выполнены Брайаном Гофом и Джерардом Юнгманом. [3] Другими основными участниками были Джим Дэвис , Рейд Придхорски, М. Бут и Ф. Росси. [3]

Версия 1.0 была выпущена в 2001 году. В последующие годы библиотека расширялась медленно; как указано в документации, сопровождающие были больше заинтересованы в стабильности, чем в дополнительной функциональности. Основная версия 1 закончилась выпуском 1.16 в июле 2013 года; это была единственная публичная активность за три года 2012–2014.

Активная разработка возобновилась с публикацией версии 2.0 в октябре 2015 года, которая включала пользовательские исправления. Последняя версия 2.8 была выпущена в мае 2024 года.

Пример

Следующий пример программы вычисляет значение функции Бесселя первого рода и нулевого порядка для 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 ; }              

Пример программы необходимо связать с библиотекой GSL при компиляции:

$ gcc $( gsl-config --cflags ) пример.c $( gsl-config --libs )     

Вывод показан ниже и должен быть верным с двойной точностью :

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

Функции

Библиотека программного обеспечения предоставляет возможности для:

Привязки к языкам программирования

Поскольку GSL написан на языке C, легко предоставить оболочки для других языков программирования. Такие оболочки в настоящее время существуют для

Поддержка С++

GSL можно использовать в классах C++ , но не с использованием указателей на функции-члены, поскольку тип указателя на функцию-член отличается от указателя на функцию . [23] Вместо этого необходимо использовать указатели на статические функции. Другим распространенным обходным путем является использование функтора .

Доступны оболочки C++ для GSL. [7] [8] [9] [10] Не все из них регулярно поддерживаются. Они предлагают доступ к классам матриц и векторов без необходимости использования интерфейса GSL для функций malloc и free . Некоторые также предлагают поддержку для создания рабочих пространств, которые ведут себя как классы интеллектуальных указателей . Наконец, есть (ограниченная, по состоянию на апрель 2020 г.) поддержка, позволяющая пользователю создавать классы для представления параметризованной функции как функтора .

Хотя они и не являются строго оболочками, существуют некоторые классы C++ [24] [25] , которые позволяют пользователям C++ использовать библиотеку Gnu Scientific с функциями оболочки.

Смотрите также

Примечания

  1. ^ GPL-3.0 или более поздняя версия с 2007-07-02.
  2. ^ GPL-2.0 или более поздняя версия с 1996-07-08 по 2007-07-02.

Ссылки

  1. ^ "Выпущен GSL 2.8".
  2. ^ "GNU - Каталог свободного программного обеспечения".
  3. ^ Домашняя страница abc GSL.
  4. ^ Проектная документация GSL.
  5. ^ Использование библиотеки. Пример программы. Документация GSL.
  6. ^ Привязки AMPL для научной библиотеки GNU. Архивировано 28 октября 2021 г. на Wayback Machine .
  7. ^ ab ccgsl: интерфейс C++ для научной библиотеки GNU;
  8. ^ ab GSL-- Оболочки C++ для GSL Архивировано 29.01.2015 на Wayback Machine ;
  9. ^ ab GSLwrap: класс-оболочка C++ для научной библиотеки GNU;
  10. ^ ab gslcpp: современная библиотека C++, содержащая только заголовки и являющаяся оболочкой для научной библиотеки GNU.
  11. ^ FGSL — интерфейс Fortran для научной библиотеки GNU.
  12. ^ Пакет hmatrix-special, интерфейс к специальным функциям GSL.
  13. ^ Пакет hmatrix-gsl, чисто функциональный интерфейс для выбранных численных вычислений, внутренне реализованный с использованием GSL.
  14. ^ Предустановки JavaCPP для GSL.
  15. ^ Интерфейс Julia к GSL.
  16. ^ GSLL, научная библиотека GNU для Lisp.
  17. ^ gsl-ocaml: привязки OCaml к GSL.
  18. ^ Интерфейс Python для научной библиотеки GNU.
  19. ^ RcppGSL: Интеграция «Rcpp» для векторов и матриц «GNU GSL».
  20. ^ gsl: оболочка для научной библиотеки Gnu.
  21. ^ rb-gsl: Ruby/GSL — это интерфейс Ruby к научной библиотеке GNU для численных вычислений с помощью Ruby.
  22. ^ rust-gsl: Привязка Rust к библиотеке GSL (GNU Scientific Library).
  23. ^ Указатели на функции-члены. Архивировано 13 октября 2004 г. на Wayback Machine .
  24. ^ o2scl Объектно-ориентированная библиотека научных вычислений;
  25. ^ ят.

Внешние ссылки