Научная библиотека GNU - GNU Scientific Library
Оригинальный автор (ы) | Марк Галасси, Джеймс Тайлер, Брайан Гоф, Джерард Юнгман и многие другие |
---|---|
Разработчики) | Проект GNU |
изначальный выпуск | Май 1996 г. |
Стабильный выпуск | GSL-2.6 / 20 августа 2019 г. |
Репозиторий | ftpmirror |
Написано в | C |
Тип | Числовая библиотека |
Лицензия | Стандартная общественная лицензия GNU |
Интернет сайт | www |
В Научная библиотека GNU (или же GSL) это библиотека программного обеспечения для численных расчетов в Прикладная математика и наука. GSL написан на C; оболочки доступны для других языков программирования. GSL является частью Проект GNU[1] и распространяется под Стандартная общественная лицензия GNU.
История проекта
Проект GSL был инициирован в 1996 году физиками Марком Галасси и Джеймсом Тайлером из Лос-Аламосская национальная лаборатория.[2] Они стремились написать современную замену широко используемым, но несколько устаревшим Фортран библиотеки, такие как Netlib.[3] Они выполнили общий дизайн и написали первые модули; с этой готовностью они наняли других ученых.
«Общая разработка библиотеки, а также дизайн и реализация основных модулей» были выполнены Брайан Гоф и Джерард Юнгман.[2] Другими крупными участниками были Джим Дэвис, Рейд Приедорски, М. Бут и Ф. Росси.[2]
Версия 1.0 была выпущена в 2001 году. В последующие годы библиотека расширялась очень медленно; как говорилось в документации, сопровождающих больше интересовала стабильность, чем дополнительная функциональность. Основная версия 1 закончилась выпуском 1.16 от июля 2013 г .; это было единственное публичное мероприятие за три года 2012–2014 гг.
Активная разработка возобновилась с выходом версии 2.0 в октябре 2015 года. Последняя версия 2.6 вышла в августе 2019 года.
Пример
В следующем примере программы вычисляется значение Функция Бесселя для 5:[4]
#включают <stdio.h>#включают <gsl/gsl_sf_bessel.h>int главный(пустота){ двойной Икс = 5.0; двойной у = gsl_sf_bessel_J0(Икс); printf("J0 (% g) =% 0,18e п", Икс, у); возвращаться 0;}
Пример программы должен быть связан с библиотекой GSL при компиляции:
gcc $(gsl-config --cflags) example.c $(gsl-config --libs)
Результат показан ниже и должен соответствовать двойная точность точность:
J0 (5) = -1,775967713143382920e-01
Функции
Библиотека программного обеспечения предоставляет возможности для:
- Основные математические функции
- Сложные числа
- Полиномы
- B-шлицы
- Специальные функции
- Векторы и матрицы
- Перестановки
- Комбинации
- Мультимножества
- Сортировка
- BLAS
- Линейная алгебра
- Eigensystems
- Быстрые преобразования Фурье
- Численное интегрирование (на основе КВАДПАК )
- Генерация случайных чисел
- Квазислучайные последовательности
- Распределения случайных чисел
- Статистика
- Гистограммы
- N-кортежи
- Интеграция Монте-Карло
- Имитация отжига
- Обыкновенные дифференциальные уравнения
- Интерполяция
- Численное дифференцирование
- Чебышевские приближения
- Серийное ускорение
- Дискретный Преобразование Ганкеля
- Поиск корня в одном и нескольких измерениях
- Минимизация в одном и нескольких измерениях
- Подгонка наименьших квадратов
- Нелинейная аппроксимация методом наименьших квадратов
- Физические константы
- Арифметика с плавающей запятой IEEE
- Дискретное вейвлет-преобразование
Привязки языка программирования
Поскольку GSL написан на C, легко предоставить оболочки для других языков программирования. Такие оболочки в настоящее время существуют для
- AMPL[5]
- C ++[6][7][8]
- Фортран[9]
- Haskell[10][11]
- Ява[12]
- Юля[13]
- Лисп[14]
- Ocaml[15]
- Октава
- Язык данных Perl
- Python[16]
- р[17][18]
- Рубин[19]
Поддержка C ++
GSL можно использовать в C ++ классов, но не используя указатели на функции-члены, потому что тип указатель на функцию-член отличается от указатель на функцию.[20] Вместо этого следует использовать указатели на статические функции. Другой распространенный обходной путь - использование функтор.
Доступны оболочки C ++ для GSL.[6][7][8] Не все из них регулярно обслуживаются. Они предлагают доступ к матричным и векторным классам без необходимости использования пользователем маллок и свободный функции. Некоторые также предлагают поддержку для создания рабочих пространств, которые ведут себя как Умный указатель классы. Наконец, существует (ограниченная, по состоянию на апрель 2020 г.) поддержка, позволяющая пользователю создавать классы для представления параметризованной функции как функтор.
Хотя это и не совсем оболочки, есть несколько классов C ++ [21][22] которые позволяют пользователям C ++ использовать научную библиотеку Gnu с функциями оболочки.
Смотрите также
- Список программного обеспечения для численного анализа
- Список числовых библиотек
- Netlib
- Числовые рецепты
Рекомендации
- ^ http://directory.fsf.org/GNU/
- ^ а б c Домашняя страница GSL.
- ^ Проектный документ GSL.
- ^ Использование библиотеки. Пример программы. Документация GSL.
- ^ Привязки AMPL для научной библиотеки GNU.
- ^ а б ccgsl: интерфейс C ++ для научной библиотеки GNU;
- ^ а б GSL - оболочки C ++ для GSL;
- ^ а б GSLwrap: класс-оболочка C ++ для научной библиотеки GNU.
- ^ FGSL - интерфейс Fortran для научной библиотеки GNU.
- ^ Пакет hmatrix-special, интерфейс для специальных функций GSL.
- ^ Пакет hmatrix-gsl, чисто функциональный интерфейс для избранных числовых вычислений, внутренне реализованный с использованием GSL.
- ^ Предустановки JavaCPP для GSL.
- ^ Интерфейс Julia к GSL.
- ^ GSLL, Научная библиотека GNU для Лиспа.
- ^ gsl-ocaml: привязки OCaml к GSL.
- ^ Интерфейс Python для научной библиотеки GNU.
- ^ RcppGSL: интеграция 'Rcpp' для векторов и матриц 'GNU GSL'.
- ^ gsl: оболочка для научной библиотеки Gnu.
- ^ rb-gsl: Ruby / GSL - это интерфейс Ruby к научной библиотеке GNU для численных вычислений с помощью Ruby..
- ^ Указатели на функции-члены. В архиве 2004-10-13 на Wayback Machine.
- ^ o2scl Объектно-ориентированная научная вычислительная библиотека;
- ^ ять.
внешняя ссылка
- Официальный веб-сайт
- В GSL упаковка за R (язык программирования), R-оболочка для специальных функций и генераторов квазислучайных чисел.