| Home | Libraries | People | FAQ | More

## Boost.Integer

### Beman Dawes

### Daryle Walker

### Gennaro Prota

### John Maddock

Copyright © 2001-2009 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)

## Overview

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.