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