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

Next

Boost.Integer

Beman Dawes

Daryle Walker

Gennaro Prota

John Maddock

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)


Table of Contents

Overview
Integer Traits
Integer Type Selection
Greatest Common Divisor and Least Common Multiple
Extended Euclidean Algorithm
Modular Multiplicative Inverse
Integer Masks
Compile Time log2 Calculation
Compile time min/max calculation
History
Removed from library: Standard Integer Types

Boost.Integer provides integer type support, particularly helpful in generic programming. It provides the means to select an integer type based upon its properties, like the number of bits or the maximum supported value, as well as compile-time bit mask selection. There is a derivative of std::numeric_limits that provides integral constant expressions for min and max. Finally, it provides two compile-time algorithms: determining the highest power of two in a compile-time value; and computing min and max of constant expressions.

Component

Header

Purpose

Forward Declarations.

<boost/integer_fwd.hpp>

Forward declarations of classes and class templates - for use when just the name of a class is needed.

Integer Traits.

<boost/integer_traits.hpp>

Class template boost::integer_traits, derives from std::numeric_limits and adds const_min and const_max members.

Integer Type Selection.

<boost/integer.hpp>

Templates for integer type selection based on properties such as maximum value or number of bits: Use to select the type of an integer when some property such as maximum value or number of bits is known. Useful for generic programming.

Greatest Common Divisor and Least Common Multiple.

<boost/integer/common_factor_rt.hpp> and <boost/integer/common_factor_ct.hpp>

Functions gcd and lcm plus function objects and compile time versions.

Integer Masks.

<boost/integer/integer_mask.hpp>

Templates for the selection of integer masks, single or lowest group, based on the number of bits: Use to select a particular mask when the bit position(s) are based on a compile-time variable. Useful for generic programming.

Compile time log2 Calculation.

<boost/integer/static_log2.hpp>

Template for finding the highest power of two in a number: Use to find the bit-size/range based on a maximum value. Useful for generic programming.

Compile time min/max calculation.

<boost/integer/static_min_max.hpp>

Templates for finding the extrema of two numbers: Use to find a bound based on a minimum or maximum value. Useful for generic programming.

Extended Euclidean algorithm.

<boost/integer/extended_euclidean.hpp>

Solves mx + ny = gcd(x,y) for x and y.

Modular multiplicative inverse.

<boost/integer/mod_inverse.hpp>

Given a and m, solves ax = 1 mod m for x.


Next