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

gmp_int

Boost , Chapter 1. Boost.Multiprecision , Integer Types

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

<#include<boost/multiprecision/gmp.hpp>>

namespace boost{ namespace multiprecision{
class gmp_int;
typedef number<gmp_int >         mpz_int;
}} // namespaces

При этом<gmp_int>используется как<boost::multiprecision::mpz_int>. Он действует как тонкая обертка вокругGMP<mpz_t>, чтобы обеспечить целочисленный тип, который является заменой для родных C++ целочисленных типов, но с неограниченной точностью.

Как и обычные преобразования из арифметических и струнных типов, тип<mpz_int>является копируемым и присваиваемым из:

  • GMPродные типы:<mpf_t>,<mpz_t>,<mpq_t>.
  • <number<T>>, которые являются обертками вокруг этих типов:<number<gmp_float<N>>>,<number<gmp_rational>>.

Также можно получить доступ к базовой функции<mpz_t>через функцию<data()>члена<gmp_int>.

Что вы должны знать при использовании этого типа:

  • Никаких изменений в глобальных настройках GMP-библиотеки не вносится, поэтому вы можете безопасно смешать этот тип с существующим кодом, который используетGMP.
  • По умолчанию построенные<gmp_int>s имеют нулевое значение (это поведение GMP по умолчанию).
  • Форматированный IO для этого типа не поддерживает октальную или шестидесятичную нотацию для отрицательных значений, в результате выполнения отформатированного вывода по этому типу, когда аргумент является отрицательным и любой из флагов<std::ios_base::oct>или<std::ios_base::hex>установлен, приведет к тому, что<std::runtime_error>будет брошен.
  • Преобразование из строки приводит к тому, что<std::runtime_error>бросается, если строка не может быть интерпретирована как действительное целое число.
  • В результате деление на ноль приводит к выбросу<std::overflow_error>.
  • Хотя этот тип обертки вокругGMP, он будет одинаково хорошо работать сMPIR.[] [[]] [[]] [[]]] [[]]] [[]]] [[]]] [[]]] [[]]] [[[]]] [[[[]]]]] [[[]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[[]]]]]] [[[[]]]]] [[[[[]]]]][[[[]]]]][[[[]]]]][[[[]]]]][[[[[]]]]][[[[]]]]][[[[]]]]][[[[]]]]][[[[]]]]][[[[]]]]][[[[]]]][[[[]]]]
  • Этот бэкэнд поддерживает rvalue-ссылки и является Move-Aware, делая инстанциации<number>на этом бэкэнд-движении осведомленными.
Example:
#include <boost/multiprecision/gmp.hpp>
#include <iostream>
int main()
{
   using namespace boost::multiprecision;
   mpz_int v = 1;
   // Do some arithmetic:
   for(unsigned i = 1; i <= 1000; ++i)
      v *= i;
   std::cout << v << std::endl; // prints 1000!
   // Access the underlying representation:
   mpz_t z;
   mpz_init(z);
   mpz_set(z, v.backend().data());
   mpz_clear(z);
   return 0;
}

PrevUpHomeNext

Статья gmp_int раздела Chapter 1. Boost.Multiprecision Integer Types может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Integer Types ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 08:31:04/0.0060701370239258/0