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

Generic Integer Operations

Boost , Chapter 1. Boost.Multiprecision , Tutorial

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

Все операции non-member integer перегружены для встроенных в целые типы в <boost/multiprecision/integer.hpp>. Если эти операции требуют временного повышения точности (например, для Powm), то, если нет встроенного типа, будет использоваться cpp_int соответствующей точности.

Некоторые из этих функций являются тривиальными, другие используют внутренние компоненты компилятора (если таковые имеются) для обеспечения оптимальной оценки.

Перегруженными функциями являются:

template <class Integer, class I2>
Integer& multiply(Integer& result, const I2& a, const I2& b);

Умножает два значения I2, чтобы получить более широкий результат Integer.

Возвращает результат = a * b без перелива или потери точности в умножении.

template <class Integer, class I2>
Integer& add(Integer& result, const I2& a, const I2& b);

Добавляет два значения I2, чтобы получить более широкий результат Integer.

Возвращает результат = a + b без перелива или потери точности в дополнении.

template <class Integer, class I2>
Integer& subtract(Integer& result, const I2& a, const I2& b);

Вычитает два значения I2, чтобы получить более широкий результат Integer.

Возвращает результат = a - b без перелива или потери точности в вычитании.

template <class Integer>
Integer powm(const Integer& b, const Integer& p, const Integer& m);

Возвращает bp % m.

template <class Integer>
void divide_qr(const Integer& x, const Integer& y, Integer& q, Integer& r);

Наборы q = x / y и r =%y.

template <class Integer1, class Integer2>
Integer2 integer_modulus(const Integer1& x, Integer2 val);

Возврат x % val;

template <class Integer>
unsigned lsb(const Integer& x);

Возвращает (нулевой) индекс наименее значимого бита x.

Выбрасывает std::domain_error, если x <= 0.

template <class Integer>
unsigned msb(const Integer& x);

Возвращает (нулевой) индекс наименее значимого бита x.

Выбрасывает std::domain_error, если x <= 0.

template <class Integer>
bool bit_test(const Integer& val, unsigned index);

Возвращает истинное , если бит индекс установлен в вал.

template <class Integer>
Integer& bit_set(Integer& val, unsigned index);

Устанавливает бит index в val.

template <class Integer>
Integer& bit_unset(Integer& val, unsigned index);

Отключает бит index в val.

template <class Integer>
Integer& bit_flip(Integer& val, unsigned index);

Переверните бит index в val.

template <class Integer>
Integer sqrt(const Integer& x);
template <class Integer>
Integer sqrt(const Integer& x, Integer& r);

Возвращает целочисленный квадратный корень s x и устанавливает r на остаток x - s2.

template <class Engine>
bool miller_rabin_test(const number-or-expression-template-type& n, unsigned trials, Engine& gen);
bool miller_rabin_test(const number-or-expression-template-type& n, unsigned trials);

Обычные функции Миллера-Рабина в <boost/multiprecision/miller_rabin.hpp> определены с точки зрения вышеупомянутых общих операций, и поэтому одинаково хорошо функционируют для встроенных и многоточных типов.


PrevUpHomeNext

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




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



:: Главная :: Tutorial ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:55:42/0.0059058666229248/1