Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Using With MPFR or GMP - High-Precision Floating-Point Library

Boost , Math Toolkit 2.5.0 , Using Boost.Math with High-Precision Floating-Point Libraries

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Специальные функции и инструменты в этой библиотеке можно использовать с MPFR (тип произвольного точного числа, основанный на GNU Multiple Precision Arithmetic Library), либо через привязки в boost/math/bindings/mpfr.hpp, либо через boost/math/bindings/mpreal.hpp.

Новые проекты рекомендуется использовать Boost.Multiprecision с GMP/MPFR backend.

Для использования этих привязок вам необходимо установить MPFR Плюс зависимость от библиотеки GMP. Вам также понадобится одна из двух поддерживаемых оберток C++ для MPFR: gmpfrxx (или mpfr_class) или mpfr-C++ (mpreal).

К сожалению, ни mpfr_class, ни mpreal не вполне удовлетворяют нашим концептуальным требованиям, поэтому существует очень тонкий набор дополнительных интерфейсов и некоторые вспомогательные черты, определенные в boost/math/bindings/mpfr.hpp и boost/math/bindings/mpreal.hpp, которые вы должны использовать вместо включения «gmpfrxx.h» или «mpreal.h» напрямую. Затем классы mpfr_class или mpreal можно использовать без изменений после включения этого заголовка, поэтому, например, шаблоны выражения mpfr_class сохраняются и полностью поддерживаются этой библиотекой:

#include <boost/math/bindings/mpfr.hpp>
#include <boost/math/special_functions/gamma.hpp>
int main()
{
   mpfr_class::set_dprec(500); // 500 bit precision
   //
   // Note that the argument to tgamma is
   // an expression template - that's just fine here.
   //
   mpfr_class v = boost::math::tgamma(sqrt(mpfr_class(2)));
   std::cout << std::setprecision(50) << v << std::endl;
}

Альтернативно использование с mpreal будет выглядеть так:

#include <boost/math/bindings/mpreal.hpp>
#include <boost/math/special_functions/gamma.hpp>
int main()
{
   mpfr::mpreal::set_precision(500); // 500 bit precision
   mpfr::mpreal v = boost::math::tgamma(sqrt(mpfr::mpreal(2)));
   std::cout << std::setprecision(50) << v << std::endl;
}

Для тех функций, которые основаны на приближении Lanczos, связывания определяют ряд приближений с точностью до 61 термина и приблизительно до 3e-113. Таким образом, это устанавливает верхний предел точности для большинства функций, определенных этой библиотекой, при использовании с mpfr_class или mpreal.

Существует программа проверки концепции поддержки mpfr here и here.


PrevUpHomeNext

Статья Using With MPFR or GMP - High-Precision Floating-Point Library раздела Math Toolkit 2.5.0 Using Boost.Math with High-Precision Floating-Point Libraries может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Using Boost.Math with High-Precision Floating-Point Libraries ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:41:44/0.0079789161682129/1