Научная библиотека ГНУ
Оригинальный автор(ы) | Марк Галасси , Джеймс Тейлер, Брайан Гоф, Джерард Юнгман и многие другие. |
---|---|
Разработчик(и) | Проект GNU |
Первоначальный выпуск | май 1996 г |
Стабильная версия | 2.8 [ 1 ]
/ 25 мая 2024 г. |
Репозиторий | 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 ]
Поддержка С++
[ редактировать ]GSL можно использовать в классах C++ , но не использовать указатели на функции-члены, поскольку тип указателя на функцию-член отличается от типа указателя на функцию . [ 23 ] Вместо этого необходимо использовать указатели на статические функции. Другой распространенный обходной путь — использование функтора .
Доступны оболочки C++ для GSL. [ 7 ] [ 8 ] [ 9 ] [ 10 ] Не все из них регулярно обслуживаются. Они предлагают доступ к матричным и векторным классам без необходимости использовать интерфейс GSL для malloc и free функций . Некоторые также предлагают поддержку создания рабочих пространств, которые ведут себя как классы интеллектуальных указателей . Наконец, существует (ограниченная по состоянию на апрель 2020 г.) поддержка, позволяющая пользователю создавать классы для представления параметризованной функции в виде функтора .
Хотя это и не строго оболочки, но существуют некоторые классы C++. [ 24 ] [ 25 ] которые позволяют пользователям C++ использовать научную библиотеку Gnu с функциями оболочки.
См. также
[ редактировать ]- Список программного обеспечения для численного анализа
- Список числовых библиотек
- Нетлиб
- Численные рецепты
Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ «Выпущен GSL 2.8» .
- ^ «GNU — Каталог свободного программного обеспечения» .
- ^ Jump up to: а б с Домашняя страница GSL .
- ^ Проектный документ GSL .
- ^ Использование библиотеки. Пример программы . Документация ГСЛ.
- ^ Привязки AMPL для Научной библиотеки GNU. Архивировано 28 октября 2021 г. в Wayback Machine .
- ^ Jump up to: а б ccgsl: интерфейс C++ для научной библиотеки GNU ;
- ^ Jump up to: а б GSL — оболочки C++ для GSL. Архивировано 29 января 2015 г. на Wayback Machine ;
- ^ Jump up to: а б GSLwrap: класс-оболочка C++ для научной библиотеки GNU ;
- ^ Jump up to: а б 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.