This is the third incarnation of my large-integer library. The first was written as a research tool in 1995 and was never released. A second, improved version was used in some of my commercial Windows software. This third one shares only the spirit of the first two; it was designed and written from scratch using all the lessons I learned from writing the first two, as well as all the mathematical knowledge I could gather from various books and the Internet.
This revision history refers only to this incarnation.
2010-03-26
- First version uploaded to the Boost File Vault for review.
2010-03-30
- Many improvements, primarily from feedback on the first Boost upload. Second version posted to the Boost File Vault.
2010-04-30
- Third version posted to the Boost File Vault for preliminary review.
- Major redesign, separating xint::integer and xint::nothrow_integer, eliminating the exception-blocking functions, and adding an xint::fixed_integer template class.
- Major overhaul of many of the functions, making them more efficient and fixing newly-discovered bugs.
- All test functions now use Boost.Test, many new tests added.
- All documentation moved to Doxygen format.
- Moved xint namespace into boost namespace.
- "Fixed" several small memory leaks. Most of them weren't real leaks, but Boost.Test couldn't tell that.
- Many less-major changes.
2010-06-01
- Fourth version posted to the Boost File Vault for preliminary review.
- Another major redesign. All three types are now templates; and it can now be compiled or used as a header-only library.
2010-06-12
- Fifth version posted to the Boost File Vault for preliminary review.
- Final major redesign (I hope). All types are consolidated into a single
integer_t
template type.
- The library is now solely header-only, dictated by the templated nature of the types.
- Added Boost.Parameter options to the
integer_t
type, so you're no longer forced to list the options in order, and list all earlier options before the one that you want to change.
2010-06-18
- Sixth version posted to the Boost File Vault for preliminary review.
- Refined the use of Boost.Parameter. Now only
fixedlength
takes a parameter; the other options are non-parameter types, which simplifies both their use and their implementation.
- Minor redesign, taking advantage of proper policy-based design. nan() and operator~() are now only available on
nothrow
and fixedlength
types, respectively, and is_nan() gets different definitions in the standard and nothrow
types.
- Added unsigned support, by request, with a variety of options for what to do when a calculation results in a negative number.
- Added the
difference
function.
- Added support for wide-character strings, by request.
- Added the safe-bool idiom, by request.