GNU Scientific Library

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:02, 12 ноября 2016.
GNU Scientific Library
41L6Gy0wZNL. SX258 BO1,204,203,200 .jpg
Создатели: Mark Galassi, James Theiler, Brian Gough, Gerard Jungman и другие
Разработчики: Проект GNU
Выпущена: Май 1996
Постоянный выпуск: GSL-2.2 / 29 август 2016
Написана на: C (язык программирования)
Операционная система: GNU, Linux, FreeBSD, NetBSD, OpenBSD, Microsoft Windows и Mac OS X
Тип ПО: Библиотека
Лицензия: GNU GPL 3
Веб-сайт www.gnu.org/software/gsl/

GNU Scientific Library (англ. GSL)— это библиотека, написанная на языке программирования C для численных вычислений в прикладной математике и науке. GSL является частью проекта GNU и распространяется на условиях лицензии GPL.

GSL используется, в частности, в таком программном обеспечении, как PSPP и Perl Data Language.[1]

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

Проект GSL был начат в 1996 году физиком Mark Galassi и James Theiler из Лос-Аламосской национальной лаборатории.[2] .Они направлены на написание современной замены для широко используемых, но несколько устаревших Fortran библиотек, таких как NETLIB. Они совершили общий дизайн и написали ранние модули; а также приняли на работу других ученых для участия.

"Общее развитие библиотеки и при разработке и реализации основных модулей" была проведена Brian Gough и Gerard Jungman. Другие крупные вкладчики были Джим Дэвис, Рид Priedhorsky, М. Бут и Ф. Росси.

Версия 1.0 была выпущена в 2001 году библиотека продолжает активно развиваться и версия 2.2 была выпущена 29 августа 2016 года.

Особые возможности

Библиотека использует объектно-ориентированное проектирование. Различные алгоритмы могут быть подключены легко или изменены во время выполнения без повторной компиляции программы.

Он предназначен для обычных научных пользователей. Тот, кто знает, что некоторые программирования C будет иметь возможность начать использовать библиотеку.

Интерфейс был разработан, чтобы быть простым, чтобы связать в самых языков высокого уровня, таких как GNU Guile или Python

Библиотека потокобезопасна.

Там, где это возможно подпрограммы были основаны на надежных государственно-домена Fortran пакетов, таких как FFTPACK и Quadpack, что разработчики GSL переопределили в C с современными конвенциями кодирования.

Библиотека легко компилировать и не имеет никаких зависимостей от других пакетов.[3]

Gsl.png

Возможности

  • Элементарные функции
  • Комплексные числа
  • Полиномы
  • Специальные функции
  • Векторы и матрицы
  • Перестановки
  • Сочетания
  • Сортировка
  • Линейная алгебра
  • Собственные векторы, значения и пространства
  • Быстрые преобразования Фурье
  • Численное интегрирование
  • Генераторы псевдослучайных чисел
  • Генераторы квазислучайных чисел
  • Распределения вероятностей
  • Статистика
  • Гистограммы
  • Кортежи
  • Интегрирование методом Монте-Карло
  • Алгоритм имитации отжига
  • Обыкновенные дифференциальные уравнения
  • Интерполяция
  • Численное дифференцирование
  • Разложение по полиномам Чебышёва
  • Суммирование рядов
  • Преобразование Ханкеля
  • Поиск корней
  • Оптимизация
  • Метод наименьших квадратов
  • Алгоритм Левенберга — Маркардта
  • Физические константы
  • Операции с числами с плавающей запятой в формате IEEE

Привязки к языкам программирования

Поскольку GSL написана на C, то просто обеспечить оболочки для других языков программирования. В настоящее время существуют такие оболочки для

  • AMPL[4]
  • C++[5]
  • Fortran
  • Haskell
  • Java[6]
  • Lisp
  • Ocaml
  • Octave
  • Perl Data Language
  • Python
  • R
  • Ruby

Поддерживаемые платформы

GSL разработан на следующей платформе,

  • GNU/Linux with gcc

компиляции на следующих других платформах,

  • SunOS 4.1.3 & Solaris 2.x (Sparc)
  • Alpha GNU/Linux, gcc
  • HP-UX 9/10/11, PA-RISC, gcc/cc
  • IRIX 6.5, gcc
  • m68k NeXTSTEP, gcc
  • Compaq Alpha Tru64 Unix, gcc
  • FreeBSD, OpenBSD & NetBSD, gcc
  • Cygwin
  • Apple Darwin 5.4
  • Hitachi SR8000 Super Technical Server, cc

Пример

Следующая программа вычисляет значение функции Бесселя для 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 

Проверка GSL подписи

Подпись можно проверить с помощью следующих шагов:

 gpg --import gsl_key.txt
 gpg --verify gsl-X.Y.tar.gz.sig 

Загрузка GSL

Текущая стабильная версия GSL-2.2.1. Она была выпущена 31 августа 2016 года Подробная информация о последних изменениях можно найти в файле NEWS.[7]

GSL можно найти в подкаталоге GSL на ближайшем GNU зеркала http://ftpmirror.gnu.org/gsl/~~pobj.

Инструкции по установке можно найти в прилагаемом файле README и INSTALL файлы.

Скомпилированные бинарные пакеты включены в состав большинства дистрибутивов GNU / Linux.

Скомпилированная версия GSL доступна как часть Cygwin на Windows, (но рекомендуется использовать GSL на свободной операционной системе, такие как GNU / Linux).

Примечания

  1. GNU Scientific Library [Электронный ресурс] : Материал из Википедии — свободной энциклопедии: — Режим доступа:https://ru.wikipedia.org/wiki/GNU_Scientific_Library
  2. GNU Scientific Library [Электронный ресурс] : Материал из GSL homepage as of oct 2012.
  3. GNU Scientific Library [Электронный ресурс] : Материал из https://www.gnu.org/: — Режим доступа: https://www.gnu.org/software/gsl/
  4. AMPL [Электронный ресурс] : Материал из http://ampl.github.io/: — Режим доступа: http://ampl.github.io/amplgsl/
  5. C ++ [Электронный ресурс] : Материал из http://cholm.web.cern.ch/cholm/: — Режим доступа: http://cholm.home.cern.ch/cholm/misc/#gslmm
  6. JAVA [Электронный ресурс] : Материал из https://github.com/: — Режим доступа: https://github.com/bytedeco/javacpp-presets/tree/master/gsl
  7. GNU Scientific Library [Электронный ресурс] : Материал из http://git.savannah.gnu.org/: — Режим доступа: http://git.savannah.gnu.org/cgit/gsl.git/tree/NEWS