GiNaC 1.6.0 - C++ библиотека для символьных вычислений

Новый выпуск 1.6.0 C++ библиотеки GiNaC (GiNaC is Not a CAS), предназначенной для неинтерактивных операций с символьными математическими выражениями, стал доступен для загрузки 22 мая 2011 года спустя 11 месяцев после выхода предыдущей версии 1.5.8.

GiNaC написана на ISO-C++ и распространяется под лицензией GNU GPLv3.

Среди основных возможностей GiNaC следующее:

  • Быстрые манипуляции с большими целыми числами и рациональными дробями благодаря использованию библиотеки CLN, в основе работы которой лежит метод умножения Карацубы (Karatsuba) и метод умножения Шёнхаге-Штрассена (Schönhage-Strassen) для больших целых чисел
  • Эффективная обработка полиномов от нескольких переменных и рациональных функций
  • Поддержка линейной алгебры включает символьные матрицы, векторы и решение уравнений
  • Очень быстрое эвристическое вычисление наибольшего общего делителя (НОД) для полиномов
  • Большое количество встроенных функций (sin, cos, atan, sinh, factorial, итд)
  • Символьное дифференцирование и разложение в ряды для всех встроенных функций
  • Различные формы возвращаемого результат (в том числе для последующей численной подстановки)
  • Эффективное и безопасное использование памяти благодаря внутреннему подсчёту ссылок (reference counting) на все выражения

Разработчикики позиционируют библиотеку как неинтерактивную, то есть наиболее естественный способ взаимодействия с ней - написание программы на C++, компиляция и затем линковка с libginac. Собственно разработчики используют компилятор C++ из GCC.
Связанный проект PyGiNaC - интерфейс к библиотеке GiNaC на Python, заброшен с версии GiNaC 1.3.2, тем не менее исходный код всё ещё доступен в CVS репозитории.

Со списком изменений можно ознакомиться в архиве с исходными кодами и на странице проекта.
По сравнению с версией 1.5.8 в новом выпуске содержится ряд исправлений, удаление зависимостей от autogen, а также улучшение алгоритма упрощения и добавление метода сопряжений для гиперболических косинуса, синуса и тангенса.

>>> Загрузить исходный код

©  Linux.org.ru