stringtranslate.com

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

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

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

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

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

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

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

Пример

Следующий пример программы вычисляет значение функции Бесселя первого рода и нулевого порядка для 5: [5]

#include <stdio.h> #include <gsl/gsl_sf_bessel.h>  int main ( void ) { double x = 5,0 ; двойной y = gsl_sf_bessel_J0 ( x ); printf ( "J0(%g) = %.18e \n " , x , y ); вернуть 0 ; }              

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

$ gcc $( gsl-config --cflags ) example.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 с функциями оболочки.

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

Примечания

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

Рекомендации

  1. ^ «Выпустите версию 2.7.1, чтобы исправить номера версий libtool».
  2. ^ "GNU - Каталог свободного программного обеспечения" .
  3. ^ Домашняя страница abc GSL.
  4. ^ Проектный документ GSL.
  5. ^ Использование библиотеки. Пример программы. Документация ГСЛ.
  6. ^ Привязки AMPL для Научной библиотеки GNU.
  7. ^ ab ccgsl: интерфейс C++ для научной библиотеки GNU;
  8. ^ ab GSL — оболочки C++ для GSL. Архивировано 29 января 2015 г. в Wayback Machine ;
  9. ^ ab GSLwrap: класс-оболочка C++ для научной библиотеки GNU;
  10. ^ ab gslcpp: Современная библиотека C++, состоящая только из заголовков, включающая научную библиотеку GNU.
  11. ^ FGSL — интерфейс Фортрана к Научной библиотеке GNU.
  12. ^ Пакет hmatrix-special, интерфейс для специальных функций GSL.
  13. ^ Пакет hmatrix-gsl, чисто функциональный интерфейс для выбранных численных вычислений, внутренне реализованный с использованием GSL.
  14. ^ Предварительные настройки JavaCPP для GSL.
  15. ^ Интерфейс Джулии для 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. ^ ржавчина-gsl: привязка Rust для библиотеки GSL (Научная библиотека GNU).
  23. ^ Указатели на функции-члены. Архивировано 13 октября 2004 г. в Wayback Machine .
  24. ^ o2scl Объектно-ориентированная библиотека научных вычислений;
  25. ^ да.

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