Научная библиотека ГНУ
Оригинальный автор(ы) | Марк Галасси , Джеймс Тейлер, Брайан Гоф, Джерард Юнгман и многие другие. |
---|---|
Разработчик(и) | Проект GNU |
Первоначальный выпуск | май 1996 г |
Стабильная версия | 2.7.1 [1] ![]() |
Репозиторий | ftpmirror |
Написано в | С |
Тип | Числовая библиотека |
Лицензия | 2007: GPL-3.0 или новее [а] 1996: GPL-2.0 или более поздняя версия [б] |
Веб-сайт | www |
Научная библиотека 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;
double y = gsl_sf_bessel_J0(x);
printf("J0(%g) = %.18e\n", x, y);
return 0;
}
Пример программы должен быть связан с библиотекой GSL. при компиляции:
$ gcc $(gsl-config --cflags) example.c $(gsl-config --libs)
Вывод показан ниже и должен быть правильным с точностью до двойной точности :
J0(5) = -1.775967713143382920e-01
Особенности [ править ]
Библиотека программного обеспечения предоставляет возможности для:
- Основные математические функции
- Комплексные числа
- Полиномы
- B-сплайны
- Специальные функции
- Векторы и матрицы
- Перестановки
- Комбинации
- Мультисеты
- Сортировка
- БЛАС
- Линейная алгебра
- собственная система
- Быстрое преобразование Фурье
- Численная интеграция (на основе QUADPACK )
- Генерация случайных чисел
- Квазислучайные последовательности
- Распределения случайных чисел
- Статистика
- Гистограммы
- N-кортежи
- Интеграция Монте-Карло
- Имитация отжига
- Обыкновенные дифференциальные уравнения
- Интерполяция
- Числовое дифференцирование
- Чебышевские приближения
- Серийное ускорение
- Дискретное преобразование Ханкеля
- Поиск корня в одном и нескольких измерениях
- Минимизация в одном и нескольких измерениях
- Подбор методом наименьших квадратов
- Нелинейная аппроксимация методом наименьших квадратов
- Физические константы
- IEEE арифметика с плавающей запятой
- Дискретное вейвлет-преобразование
Привязки к языку программирования [ править ]
Поскольку GSL написан на C, можно легко предоставить оболочки для других языков программирования. Такие обертки в настоящее время существуют для
- AMPL [6]
- С++ [7] [8] [9] [10]
- Фортран [11]
- Хаскелл [12] [13]
- Ява [14]
- Юлия [15]
- Общий Лисп [16]
- OCaml [17]
- Октава
- Язык данных Perl
- Питон [18]
- Р [19] [20]
- Руби [21]
- Ржавчина [22]
Поддержка C++ [ править ]
GSL можно использовать в классах C++ , но не использовать указатели на функции-члены, поскольку тип указателя на функцию-член отличается от типа указателя на функцию . [23] Вместо этого необходимо использовать указатели на статические функции. Другой распространенный обходной путь — использование функтора .
Доступны оболочки C++ для GSL. [7] [8] [9] [10] Не все из них регулярно обслуживаются. Они предлагают доступ к матричным и векторным классам без необходимости использования интерфейса GSL для malloc и free функций . Некоторые также предлагают поддержку создания рабочих пространств, которые ведут себя как классы интеллектуальных указателей . Наконец, существует (ограниченная по состоянию на апрель 2020 г.) поддержка, позволяющая пользователю создавать классы для представления параметризованной функции в виде функтора .
Хотя это и не строго оболочки, но существуют некоторые классы C++. [24] [25] которые позволяют пользователям C++ использовать научную библиотеку Gnu с функциями оболочки.
См. также [ править ]

- Список программного обеспечения для численного анализа
- Список числовых библиотек
- Нетлиб
- Численные рецепты
Примечания [ править ]
Ссылки [ править ]
- ^ «Выпустите версию 2.7.1, чтобы исправить номера версий libtool» .
- ^ «GNU — Каталог свободного программного обеспечения» .
- ↑ Перейти обратно: Перейти обратно: а б с Домашняя страница GSL .
- ^ Проектный документ GSL .
- ^ Использование библиотеки. Пример программы . Документация GSL.
- ^ Привязки AMPL для Научной библиотеки GNU. Архивировано 28 октября 2021 г. в Wayback Machine .
- ↑ Перейти обратно: Перейти обратно: а б ccgsl: интерфейс C++ для научной библиотеки GNU ;
- ↑ Перейти обратно: Перейти обратно: а б GSL — оболочки C++ для GSL. Архивировано 29 января 2015 г. на Wayback Machine ;
- ↑ Перейти обратно: Перейти обратно: а б GSLwrap: класс-оболочка C++ для научной библиотеки GNU ;
- ↑ Перейти обратно: Перейти обратно: а б gslcpp: современная библиотека C++, состоящая только из заголовков, включающая научную библиотеку GNU .
- ^ FGSL — интерфейс на Фортране к Научной библиотеке GNU .
- ^ Пакет hmatrix-special, интерфейс для специальных функций GSL .
- ^ Пакет hmatrix-gsl, чисто функциональный интерфейс для избранных числовых вычислений, внутренне реализованный с использованием GSL .
- ^ Пресеты JavaCPP для GSL .
- ^ Интерфейс Джулии к GSL .
- ^ GSLL, Научная библиотека GNU для Lisp .
- ^ gsl-ocaml: привязки OCaml к GSL .
- ^ Интерфейс Python для научной библиотеки GNU .
- ^ RcppGSL: интеграция Rcpp для векторов и матриц GNU GSL .
- ^ gsl: оболочка для научной библиотеки Gnu .
- ^ rb-gsl: Ruby/GSL — это Ruby-интерфейс к Научной библиотеке GNU для численных вычислений с помощью Ruby .
- ^ ржавчина-gsl: привязка Rust для библиотеки GSL (Научная библиотека GNU).
- ^ Указатели на функции-члены . Архивировано 13 октября 2004 г. в Wayback Machine .
- ^ o2scl Объектно-ориентированная библиотека научных вычислений ;
- ^ да .
Внешние ссылки [ править ]
- Официальный сайт
- Проектная документация GSL
- Пакет gsl , оболочка R для для R (язык программирования) специальных функций и генераторов квазислучайных чисел.
- Интервью FLOSS FOR SCIENCE с Марком Галасси об истории GSL.