|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r61346 - in sandbox/xint: boost/xint build doc doc/dox example src test
From: chad.thecomfychair_at_[hidden]
Date: 2010-04-17 20:46:19
Author: chadnelson
Date: 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
New Revision: 61346
URL: http://svn.boost.org/trac/boost/changeset/61346
Log:
Massive restructuring.
* Redesigned internals, using "struct hack"
* Changed xint::core::integer to xint::integer
* Changed xint::blockable::integer to xint::nothrow_integer
* Eliminated core and blockable namespaces
* Eliminated exception-blocking functions
* Added limited support for "negative zero"
* Moved exceptions to their own namespace
* Other internal changes in preparation for adding fixed_integer<T> type
* Overhauled documentation and examples to reflect above changes
Added:
sandbox/xint/boost/xint/exceptions.hpp (contents, props changed)
sandbox/xint/boost/xint/integer.hpp (contents, props changed)
sandbox/xint/boost/xint/internals.hpp (contents, props changed)
sandbox/xint/boost/xint/monty.hpp (contents, props changed)
- copied, changed from r61200, /sandbox/xint/boost/xint/xint_monty.hpp
sandbox/xint/boost/xint/nothrow_integer.hpp (contents, props changed)
sandbox/xint/boost/xint/random.hpp (contents, props changed)
sandbox/xint/doc/base__integer_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/data__t_8cpp.html
sandbox/xint/doc/base__integer_8cpp_source.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer-members.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer.png (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1cannot__represent-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1cannot__represent.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1divide__by__zero-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1divide__by__zero.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__argument-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__argument.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__base-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__base.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__digit-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__digit.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__modulus-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__modulus.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1no__strong__random-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1no__strong__random.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1not__a__number-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1not__a__number.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1overflow__error-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1overflow__error.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1too__big-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1too__big.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html
- copied, changed from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1integer.html
- copied, changed from r61200, /sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html
sandbox/xint/doc/classboost_1_1xint_1_1integer.png (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer-members.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer.png (contents, props changed)
sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4-members.html (contents, props changed)
sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html (contents, props changed)
sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4-members.html (contents, props changed)
sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html (contents, props changed)
sandbox/xint/doc/dox/zero.dox (contents, props changed)
sandbox/xint/doc/exceptions_8hpp.html (contents, props changed)
sandbox/xint/doc/exceptions_8hpp_source.html (contents, props changed)
sandbox/xint/doc/integer_8hpp.html (contents, props changed)
sandbox/xint/doc/integer_8hpp_source.html (contents, props changed)
sandbox/xint/doc/internals_8hpp.html (contents, props changed)
sandbox/xint/doc/internals_8hpp_source.html (contents, props changed)
sandbox/xint/doc/monty_8hpp.html
- copied, changed from r61200, /sandbox/xint/doc/xint__monty_8hpp.html
sandbox/xint/doc/monty_8hpp_source.html
- copied, changed from r61200, /sandbox/xint/doc/xint__monty_8hpp_source.html
sandbox/xint/doc/namespaceboost_1_1xint_1_1exception.html (contents, props changed)
sandbox/xint/doc/namespaceboost_1_1xint_1_1exceptions.html (contents, props changed)
sandbox/xint/doc/namespacestd.html
- copied, changed from r61200, /sandbox/xint/doc/namespaceboost.html
sandbox/xint/doc/nothrow__bit__manipulations_8cpp.html (contents, props changed)
sandbox/xint/doc/nothrow__bit__manipulations_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__compare_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__compare_8cpp.html
sandbox/xint/doc/nothrow__compare_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__convert_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__convert_8cpp.html
sandbox/xint/doc/nothrow__convert_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__gcd_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__misc_8cpp.html
sandbox/xint/doc/nothrow__gcd_8cpp_source.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__roots_8cpp_source.html
sandbox/xint/doc/nothrow__integer_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/integer_8cpp.html
sandbox/xint/doc/nothrow__integer_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__integer_8hpp.html (contents, props changed)
sandbox/xint/doc/nothrow__integer_8hpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__misc_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__misc_8cpp.html
sandbox/xint/doc/nothrow__misc_8cpp_source.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__roots_8cpp_source.html
sandbox/xint/doc/nothrow__modular_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__modular_8cpp.html
sandbox/xint/doc/nothrow__modular_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__operators_8cpp.html (contents, props changed)
sandbox/xint/doc/nothrow__operators_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__powers_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/roots_8cpp.html
sandbox/xint/doc/nothrow__powers_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__primes_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__primes_8cpp.html
sandbox/xint/doc/nothrow__primes_8cpp_source.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__misc_8cpp_source.html
sandbox/xint/doc/nothrow__primitives_8cpp.html (contents, props changed)
sandbox/xint/doc/nothrow__primitives_8cpp_source.html (contents, props changed)
sandbox/xint/doc/nothrow__random_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__random_8cpp.html
sandbox/xint/doc/nothrow__random_8cpp_source.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__misc_8cpp_source.html
sandbox/xint/doc/nothrow__roots_8cpp.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__roots_8cpp.html
sandbox/xint/doc/nothrow__roots_8cpp_source.html
- copied, changed from r61200, /sandbox/xint/doc/blockable__misc_8cpp_source.html
sandbox/xint/doc/random_8hpp.html
- copied, changed from r61200, /sandbox/xint/doc/random_8cpp.html
sandbox/xint/doc/random_8hpp_source.html (contents, props changed)
sandbox/xint/doc/zero.html (contents, props changed)
sandbox/xint/doc/zero_8dox.html
- copied, changed from r61200, /sandbox/xint/doc/nan_8dox.html
sandbox/xint/src/base_integer.cpp (contents, props changed)
sandbox/xint/src/nothrow_bit_manipulations.cpp (contents, props changed)
sandbox/xint/src/nothrow_compare.cpp (contents, props changed)
- copied, changed from r61200, /sandbox/xint/src/blockable_compare.cpp
sandbox/xint/src/nothrow_convert.cpp (contents, props changed)
sandbox/xint/src/nothrow_gcd.cpp (contents, props changed)
sandbox/xint/src/nothrow_integer.cpp (contents, props changed)
sandbox/xint/src/nothrow_misc.cpp (contents, props changed)
- copied, changed from r61200, /sandbox/xint/src/blockable_misc.cpp
sandbox/xint/src/nothrow_modular.cpp (contents, props changed)
sandbox/xint/src/nothrow_operators.cpp (contents, props changed)
sandbox/xint/src/nothrow_powers.cpp (contents, props changed)
sandbox/xint/src/nothrow_primes.cpp (contents, props changed)
- copied, changed from r61200, /sandbox/xint/src/blockable_primes.cpp
sandbox/xint/src/nothrow_primitives.cpp (contents, props changed)
sandbox/xint/src/nothrow_random.cpp (contents, props changed)
- copied, changed from r61200, /sandbox/xint/src/blockable_random.cpp
sandbox/xint/src/nothrow_roots.cpp (contents, props changed)
- copied, changed from r61200, /sandbox/xint/src/blockable_roots.cpp
Removed:
sandbox/xint/boost/xint/xint_data_t.hpp
sandbox/xint/boost/xint/xint_monty.hpp
sandbox/xint/boost/xint/xint_test.hpp
sandbox/xint/src/blockable_bit_manipulations.cpp
sandbox/xint/src/blockable_compare.cpp
sandbox/xint/src/blockable_convert.cpp
sandbox/xint/src/blockable_gcd.cpp
sandbox/xint/src/blockable_integer.cpp
sandbox/xint/src/blockable_misc.cpp
sandbox/xint/src/blockable_modular.cpp
sandbox/xint/src/blockable_operators.cpp
sandbox/xint/src/blockable_powers.cpp
sandbox/xint/src/blockable_primes.cpp
sandbox/xint/src/blockable_primitives.cpp
sandbox/xint/src/blockable_random.cpp
sandbox/xint/src/blockable_roots.cpp
sandbox/xint/src/exception_blocker.cpp
Binary files modified:
sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.png
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.png
Text files modified:
sandbox/xint/boost/xint/monty.hpp | 8
sandbox/xint/boost/xint/xint.hpp | 1054 ---------
sandbox/xint/build/Jamfile.v2 | 19
sandbox/xint/doc/acknowledgements.html | 7
sandbox/xint/doc/acknowledgements_8dox.html | 2
sandbox/xint/doc/annotated.html | 33
sandbox/xint/doc/base__integer_8cpp.html | 16
sandbox/xint/doc/bit__manipulations_8cpp.html | 53
sandbox/xint/doc/bit__manipulations_8cpp_source.html | 274 +-
sandbox/xint/doc/blockable__bit__manipulations_8cpp.html | 35
sandbox/xint/doc/blockable__bit__manipulations_8cpp_source.html | 204
sandbox/xint/doc/blockable__compare_8cpp.html | 29
sandbox/xint/doc/blockable__compare_8cpp_source.html | 96
sandbox/xint/doc/blockable__convert_8cpp.html | 23
sandbox/xint/doc/blockable__convert_8cpp_source.html | 88
sandbox/xint/doc/blockable__gcd_8cpp.html | 22
sandbox/xint/doc/blockable__gcd_8cpp_source.html | 63
sandbox/xint/doc/blockable__integer_8cpp.html | 13
sandbox/xint/doc/blockable__integer_8cpp_source.html | 367 +-
sandbox/xint/doc/blockable__misc_8cpp.html | 15
sandbox/xint/doc/blockable__misc_8cpp_source.html | 28
sandbox/xint/doc/blockable__modular_8cpp.html | 23
sandbox/xint/doc/blockable__modular_8cpp_source.html | 105
sandbox/xint/doc/blockable__operators_8cpp.html | 33
sandbox/xint/doc/blockable__operators_8cpp_source.html | 32
sandbox/xint/doc/blockable__powers_8cpp.html | 21
sandbox/xint/doc/blockable__powers_8cpp_source.html | 76
sandbox/xint/doc/blockable__primes_8cpp.html | 17
sandbox/xint/doc/blockable__primes_8cpp_source.html | 46
sandbox/xint/doc/blockable__primitives_8cpp.html | 28
sandbox/xint/doc/blockable__primitives_8cpp_source.html | 126
sandbox/xint/doc/blockable__random_8cpp.html | 15
sandbox/xint/doc/blockable__random_8cpp_source.html | 34
sandbox/xint/doc/blockable__roots_8cpp.html | 15
sandbox/xint/doc/blockable__roots_8cpp_source.html | 28
sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer-members.html | 39
sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.html | 110
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer-members.html | 19
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.html | 312 ++
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html | 42
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html | 176 -
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1cannot__represent-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1divide__by__zero-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__argument-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__base-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__digit-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__modulus-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1no__strong__random-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1not__a__number-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1overflow__error-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1too__big-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html | 7
sandbox/xint/doc/classboost_1_1xint_1_1integer.html | 408 +--
sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html | 2
sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html | 22
sandbox/xint/doc/classes.html | 21
sandbox/xint/doc/compare_8cpp.html | 27
sandbox/xint/doc/compare_8cpp_source.html | 102
sandbox/xint/doc/convert_8cpp.html | 25
sandbox/xint/doc/convert_8cpp_source.html | 308 +-
sandbox/xint/doc/copyonwrite_8dox.html | 2
sandbox/xint/doc/cow.html | 4
sandbox/xint/doc/data__t_8cpp.html | 17
sandbox/xint/doc/data__t_8cpp_source.html | 434 +--
sandbox/xint/doc/dependencies.html | 2
sandbox/xint/doc/dependencies_8dox.html | 2
sandbox/xint/doc/dox/acknowledgements.dox | 7
sandbox/xint/doc/dox/copyonwrite.dox | 11
sandbox/xint/doc/dox/exceptions.dox | 56
sandbox/xint/doc/dox/history.dox | 4
sandbox/xint/doc/dox/index.dox | 9
sandbox/xint/doc/dox/nan.dox | 21
sandbox/xint/doc/dox/r_core.dox | 36
sandbox/xint/doc/dox/r_exception_blocking.dox | 16
sandbox/xint/doc/dox/r_nan.dox | 3
sandbox/xint/doc/dox/r_negzero.dox | 15
sandbox/xint/doc/dox/r_random.dox | 2
sandbox/xint/doc/dox/random.dox | 4
sandbox/xint/doc/dox/rationale.dox | 2
sandbox/xint/doc/dox/threadsafe.dox | 4
sandbox/xint/doc/ex__fibonacci.html | 6
sandbox/xint/doc/ex__fibonacci_8dox.html | 2
sandbox/xint/doc/exception__blocker_8cpp.html | 4
sandbox/xint/doc/exception__blocker_8cpp_source.html | 2
sandbox/xint/doc/exceptions.html | 65
sandbox/xint/doc/exceptions_8dox.html | 2
sandbox/xint/doc/files.html | 43
sandbox/xint/doc/functions.html | 389 ++-
sandbox/xint/doc/functions_func.html | 260 +-
sandbox/xint/doc/functions_type.html | 6
sandbox/xint/doc/functions_vars.html | 168 +
sandbox/xint/doc/gcd_8cpp.html | 27
sandbox/xint/doc/gcd_8cpp_source.html | 178
sandbox/xint/doc/globals.html | 5
sandbox/xint/doc/globals_defs.html | 2
sandbox/xint/doc/globals_vars.html | 5
sandbox/xint/doc/hierarchy.html | 33
sandbox/xint/doc/history.html | 4
sandbox/xint/doc/history_8dox.html | 2
sandbox/xint/doc/index.html | 7
sandbox/xint/doc/index_8dox.html | 2
sandbox/xint/doc/integer_8cpp.html | 9
sandbox/xint/doc/integer_8cpp_source.html | 325 +-
sandbox/xint/doc/misc_8cpp.html | 16
sandbox/xint/doc/misc_8cpp_source.html | 29
sandbox/xint/doc/modular_8cpp.html | 25
sandbox/xint/doc/modular_8cpp_source.html | 116
sandbox/xint/doc/monty_8cpp.html | 37
sandbox/xint/doc/monty_8cpp_source.html | 483 ++--
sandbox/xint/doc/monty_8hpp.html | 41
sandbox/xint/doc/monty_8hpp_source.html | 38
sandbox/xint/doc/namespaceboost.html | 6
sandbox/xint/doc/namespaceboost_1_1xint.html | 4418 ++++++++++++++++++++++++++++++++++++++-
sandbox/xint/doc/namespaceboost_1_1xint_1_1blockable.html | 1922 ----------------
sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html | 40
sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html | 164 +
sandbox/xint/doc/namespacemembers.html | 253 -
sandbox/xint/doc/namespacemembers_func.html | 250 -
sandbox/xint/doc/namespacemembers_type.html | 5
sandbox/xint/doc/namespacemembers_vars.html | 2
sandbox/xint/doc/namespaces.html | 8
sandbox/xint/doc/namespacestd.html | 15
sandbox/xint/doc/nan.html | 14
sandbox/xint/doc/nan_8dox.html | 2
sandbox/xint/doc/nothrow__compare_8cpp.html | 37
sandbox/xint/doc/nothrow__convert_8cpp.html | 31
sandbox/xint/doc/nothrow__gcd_8cpp.html | 24
sandbox/xint/doc/nothrow__gcd_8cpp_source.html | 39
sandbox/xint/doc/nothrow__integer_8cpp.html | 21
sandbox/xint/doc/nothrow__misc_8cpp.html | 23
sandbox/xint/doc/nothrow__misc_8cpp_source.html | 27
sandbox/xint/doc/nothrow__modular_8cpp.html | 31
sandbox/xint/doc/nothrow__powers_8cpp.html | 27
sandbox/xint/doc/nothrow__primes_8cpp.html | 25
sandbox/xint/doc/nothrow__primes_8cpp_source.html | 39
sandbox/xint/doc/nothrow__random_8cpp.html | 23
sandbox/xint/doc/nothrow__random_8cpp_source.html | 34
sandbox/xint/doc/nothrow__roots_8cpp.html | 23
sandbox/xint/doc/nothrow__roots_8cpp_source.html | 31
sandbox/xint/doc/operators_8cpp.html | 29
sandbox/xint/doc/operators_8cpp_source.html | 28
sandbox/xint/doc/pages.html | 2
sandbox/xint/doc/powers_8cpp.html | 25
sandbox/xint/doc/powers_8cpp_source.html | 202
sandbox/xint/doc/primes.html | 15
sandbox/xint/doc/primes_8cpp.html | 17
sandbox/xint/doc/primes_8cpp_source.html | 196
sandbox/xint/doc/primes_8dox.html | 2
sandbox/xint/doc/primitives_8cpp.html | 37
sandbox/xint/doc/primitives_8cpp_source.html | 465 ++--
sandbox/xint/doc/r__core.html | 13
sandbox/xint/doc/r__core_8dox.html | 2
sandbox/xint/doc/r__cow.html | 2
sandbox/xint/doc/r__cow_8dox.html | 2
sandbox/xint/doc/r__default__necessary.html | 2
sandbox/xint/doc/r__default__necessary_8dox.html | 2
sandbox/xint/doc/r__exception__blocking.html | 8
sandbox/xint/doc/r__exception__blocking_8dox.html | 2
sandbox/xint/doc/r__insecure__default.html | 2
sandbox/xint/doc/r__insecure__default_8dox.html | 2
sandbox/xint/doc/r__interface.html | 2
sandbox/xint/doc/r__interface_8dox.html | 2
sandbox/xint/doc/r__interface__design__only.html | 2
sandbox/xint/doc/r__interface__design__only_8dox.html | 2
sandbox/xint/doc/r__nan.html | 4
sandbox/xint/doc/r__nan_8dox.html | 2
sandbox/xint/doc/r__negzero.html | 6
sandbox/xint/doc/r__negzero_8dox.html | 2
sandbox/xint/doc/r__random.html | 4
sandbox/xint/doc/r__random_8dox.html | 2
sandbox/xint/doc/r__shared__ptr.html | 2
sandbox/xint/doc/r__shared__ptr_8dox.html | 2
sandbox/xint/doc/random.html | 4
sandbox/xint/doc/random_8cpp.html | 13
sandbox/xint/doc/random_8cpp_source.html | 375 +-
sandbox/xint/doc/random_8dox.html | 2
sandbox/xint/doc/random_8hpp.html | 36
sandbox/xint/doc/rationale.html | 8
sandbox/xint/doc/rationale_8dox.html | 2
sandbox/xint/doc/roots_8cpp.html | 13
sandbox/xint/doc/roots_8cpp_source.html | 48
sandbox/xint/doc/securemode.html | 2
sandbox/xint/doc/securemode_8dox.html | 2
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html | 2
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html | 8
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html | 32
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html | 535 ----
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html | 2
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html | 12
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html | 2
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html | 18
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html | 6
sandbox/xint/doc/testing.html | 2
sandbox/xint/doc/testing_8dox.html | 2
sandbox/xint/doc/threadsafe.html | 3
sandbox/xint/doc/threadsafe_8dox.html | 2
sandbox/xint/doc/todo.html | 11
sandbox/xint/doc/xint_8hpp.html | 339 ---
sandbox/xint/doc/xint_8hpp_source.html | 687 ------
sandbox/xint/doc/xint__data__t_8hpp.html | 16
sandbox/xint/doc/xint__data__t_8hpp_source.html | 95
sandbox/xint/doc/xint__monty_8hpp.html | 2
sandbox/xint/doc/xint__monty_8hpp_source.html | 2
sandbox/xint/doc/xint__test_8hpp.html | 2
sandbox/xint/doc/xint__test_8hpp_source.html | 2
sandbox/xint/doc/zero_8dox.html | 6
sandbox/xint/example/exceptions.cpp | 41
sandbox/xint/example/fibonacci.cpp | 2
sandbox/xint/example/genprime.cpp | 9
sandbox/xint/src/bit_manipulations.cpp | 68
sandbox/xint/src/compare.cpp | 26
sandbox/xint/src/convert.cpp | 55
sandbox/xint/src/data_t.cpp | 388 --
sandbox/xint/src/gcd.cpp | 6
sandbox/xint/src/integer.cpp | 140 -
sandbox/xint/src/misc.cpp | 3
sandbox/xint/src/modular.cpp | 8
sandbox/xint/src/monty.cpp | 9
sandbox/xint/src/nothrow_compare.cpp | 43
sandbox/xint/src/nothrow_misc.cpp | 17
sandbox/xint/src/nothrow_primes.cpp | 24
sandbox/xint/src/nothrow_random.cpp | 19
sandbox/xint/src/nothrow_roots.cpp | 13
sandbox/xint/src/operators.cpp | 2
sandbox/xint/src/powers.cpp | 40
sandbox/xint/src/primes.cpp | 16
sandbox/xint/src/primitives.cpp | 97
sandbox/xint/src/random.cpp | 27
sandbox/xint/src/roots.cpp | 8
sandbox/xint/test/test_add.cpp | 14
sandbox/xint/test/test_bit_manipulations.cpp | 2
sandbox/xint/test/test_convert.cpp | 13
sandbox/xint/test/test_divide.cpp | 2
sandbox/xint/test/test_main.cpp | 18
sandbox/xint/test/test_monty.cpp | 4
sandbox/xint/test/test_multiply.cpp | 4
sandbox/xint/test/test_streams.cpp | 9
246 files changed, 9473 insertions(+), 10351 deletions(-)
Added: sandbox/xint/boost/xint/exceptions.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/exceptions.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,138 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief The exception namespace.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_EXCEPTIONS_HPP
+#define BOOST_INCLUDED_XINT_EXCEPTIONS_HPP
+
+#include "internals.hpp"
+
+namespace boost {
+namespace xint {
+
+//! \brief Every exception the library throws is from this namespace.
+namespace exceptions {
+
+/*!
+ Derived from \c std::invalid_argument.
+*/
+class invalid_argument: public std::invalid_argument {
+ public:
+ invalid_argument(const std::string& what="invalid argument"):
+ std::invalid_argument(what) { }
+};
+
+/*!
+ Derived from \c std::invalid_argument.
+*/
+class invalid_base: public std::invalid_argument {
+ public:
+ invalid_base(const std::string& what="invalid base"): invalid_argument(what)
+ { }
+};
+
+/*!
+ Derived from \c std::range_error.
+*/
+class invalid_digit: public std::range_error {
+ public:
+ invalid_digit(const std::string& what="invalid digit"): range_error(what)
+ { }
+};
+
+/*!
+ Derived from \c std::invalid_argument.
+*/
+class invalid_modulus: public std::invalid_argument {
+ public:
+ invalid_modulus(const std::string& what="invalid modulus"):
+ invalid_argument(what) { }
+};
+
+/*!
+ Derived from \c std::invalid_argument.
+*/
+class divide_by_zero: public std::invalid_argument {
+ public:
+ divide_by_zero(const std::string& what="divide by zero error"):
+ invalid_argument(what) { }
+};
+
+/*!
+ Derived from \c std::invalid_argument.
+*/
+class cannot_represent: public std::invalid_argument {
+ public:
+ cannot_represent(const std::string& what=
+ "cannot represent the requested value"): invalid_argument(what) { }
+};
+
+/*!
+ Derived from \c std::range_error.
+*/
+class too_big: public std::range_error {
+ public:
+ too_big(const std::string& what=
+ "value out of range for requested conversion"): range_error(what) { }
+};
+
+/*!
+ Derived from \c std::runtime_error.
+
+ \remarks
+ Most library functions will throw a not_a_number exception if you try to use
+ a \ref nan "Not-a-Number value" in them.
+*/
+class not_a_number: public std::runtime_error {
+ public:
+ not_a_number(const std::string& what="attempted to use a Not-a-Number"):
+ runtime_error(what) { }
+};
+
+/*!
+ Derived from \c std::runtime_error.
+
+ \remarks
+ Thrown by the xint::strong_random_generator class's constructor, if the
+ system does not provide a cryptographically-secure random generator. Also
+ thrown if the generator fails when asked to provide a random value, though
+ this should be vanishingly rare.
+*/
+class no_strong_random: public std::runtime_error {
+ public:
+ no_strong_random(const std::string& what=
+ "system does not have a strong random generator"):
+ runtime_error(what) { }
+};
+
+/*!
+ Derived from \c std::overflow_error.
+
+ \remarks
+ Thrown when the library can't get enough memory to represent a number.
+*/
+class overflow_error: public std::overflow_error {
+ public:
+ overflow_error(const std::string& what=
+ "overflow error: can't obtain enough memory to represent the requested number"):
+ std::overflow_error(what) { }
+};
+
+} // namespace exception
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_EXCEPTIONS_HPP
Added: sandbox/xint/boost/xint/integer.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/integer.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,436 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Declares the core integer type.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_INTEGER_HPP
+#define BOOST_INCLUDED_XINT_INTEGER_HPP
+
+#include "internals.hpp"
+#include "exceptions.hpp"
+#include <boost/type_traits.hpp>
+
+namespace boost {
+namespace xint {
+
+/*! \brief The core %integer class.
+
+ This class implements the standard \c integer type.
+
+ There are only a few member functions; most of the functionality is
+ implemented using standalone functions.
+
+ Functions that start with an underscore (such as \c _make_unique) are
+ intended for internal use only. They may change arbitrarily in future
+ versions.
+*/
+class integer: public detail::base_integer {
+ public:
+
+ //! \name Constructors & Destructors
+ //!@{
+ integer();
+ integer(const integer& b);
+ explicit integer(const nothrow_integer& b);
+ explicit integer(const std::string& str, size_t base=10);
+ template <typename T> integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type* = 0,
+ typename boost::enable_if<boost::is_signed<T> >::type* = 0);
+ template <typename T> integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type* = 0,
+ typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+ //!@}
+
+ /*! \name Mathematical and Bitwise Operators
+ \brief These operate exactly like their counterparts for the built-in
+ %integer types.
+
+ Note that there is no \c operator~. Since the integer type doesn't have
+ a fixed maximum size, there is no logical way to implement it.
+ */
+ //@{
+ integer& operator=(const integer &c);
+
+ integer& operator+=(const integer& b);
+ integer& operator-=(const integer& b);
+ integer& operator*=(const integer& b);
+ integer& operator/=(const integer& b);
+ integer& operator%=(const integer& b);
+
+ integer& operator++(); //!< \details Preincrement operator
+ integer& operator--(); //!< \details Predecrement operator
+ integer operator++(int); //!< \details Postincrement operator -- not recommended, inefficient
+ integer operator--(int); //!< \details Postdecrement operator -- not recommended, inefficient
+
+ integer& operator&=(const integer& n);
+ integer& operator|=(const integer& n);
+ integer& operator^=(const integer& n);
+ integer operator<<(size_t shift) const;
+ integer operator>>(size_t shift) const;
+ integer& operator<<=(size_t shift);
+ integer& operator>>=(size_t shift);
+ //@}
+
+ /*! \name Preconstructed integers
+
+ These return preconstructed integers with the values named by the
+ functions. They are used internally, so that the most common values
+ don't have to be constructed each time they're needed.
+ */
+ //@{
+ static const integer& zero();
+ static const integer& one();
+ //@}
+
+ //! \name Miscellaneous Functions
+ //!@{
+ bool odd() const;
+ bool even() const;
+ int sign(bool signed_zero=false) const;
+
+ size_t hex_digits() const;
+ //!@}
+
+ /*! \name Internal Functions
+ \brief These functions allow access to the internals of the %integer.
+ They are intended for internal use only.
+ */
+ //@{
+ void _make_unique();
+ //@}
+};
+
+//! \name Mathematical primitives
+//!@{
+integer abs(const integer& n);
+integer negate(const integer& n);
+integer add(const integer& n, const integer& addend);
+integer subtract(const integer& n, const integer& subtrahend);
+integer multiply(const integer& n, const integer& multiplicand);
+integer divide(const integer& dividend, const integer& divisor);
+std::pair<integer, integer> divide_r(const integer& dividend, const integer&
+ divisor);
+//!@}
+
+//! \name Powers and roots
+//!@{
+integer sqr(const integer& n);
+integer pow(const integer& n, const integer& exponent);
+integer pow2(size_t exponent);
+integer factorial(size_t n);
+integer sqrt(const integer& n);
+//!@}
+
+//! \name Conversion functions
+//!@{
+template <typename T> T to(const integer& n);
+std::string to_string(const integer& n, size_t base=10, bool upperCase=false);
+integer from_string(const std::string& str, size_t base=10);
+std::string to_binary(const integer& n);
+integer from_binary(const std::string& s);
+//!@}
+
+//! \name Bit-manipulation functions
+//!@{
+bool getbit(const integer& n, size_t bit);
+void setbit(integer& n, size_t bit);
+void clearbit(integer& n, size_t bit);
+size_t lowestbit(const integer& n, size_t valueIfZero=0);
+size_t highestbit(const integer& n, size_t valueIfZero=0);
+integer bitwise_and(const integer& n1, const integer& n2);
+integer bitwise_or (const integer& n1, const integer& n2);
+integer bitwise_xor(const integer& n1, const integer& n2);
+integer shift(const integer& n, int byBits);
+integer shift_left(const integer& n, size_t byBits);
+integer shift_right(const integer& n, size_t byBits);
+//!@}
+
+/*! \name Modular math functions
+
+A common reason to use a large-integer library is to implement public-key
+encryption, and the algorithms for such encryption often use modular math.
+*/
+//!@{
+integer mod(const integer& n, const integer& modBy);
+integer mulmod(const integer& n, const integer& by, const integer& modulus);
+integer sqrmod(const integer& n, const integer& modulus);
+integer powmod(const integer& n, const integer& exponent, const integer&
+ modulus, bool noMontgomery=false);
+integer invmod(const integer& n, const integer& modulus);
+//!@}
+
+//! \name Random number functions
+//!@{
+integer random_by_size(size_t sizeInBits, bool highBitOn=false, bool
+ lowBitOn=false, bool canBeNegative=false);
+//!@}
+
+//! \name Prime number functions
+//!@{
+int is_prime(const integer& n, callback_t callback=no_callback);
+integer random_prime(size_t sizeInBits, callback_t callback=no_callback);
+//!@}
+
+/*! \name Operators
+
+ These act exactly the same as for the built-in %integer types.
+*/
+//!@{
+bool operator!(const integer& n1);
+bool operator<(const integer& n1, const integer& n2);
+bool operator>(const integer& n1, const integer& n2);
+bool operator<=(const integer& n1, const integer& n2);
+bool operator>=(const integer& n1, const integer& n2);
+bool operator==(const integer& n1, const integer& n2);
+bool operator!=(const integer& n1, const integer& n2);
+
+const integer& operator+(const integer& a);
+integer operator-(const integer& a);
+integer operator+(const integer& n1, const integer& n2);
+integer operator-(const integer& n1, const integer& n2);
+integer operator*(const integer& n1, const integer& n2);
+integer operator/(const integer& n1, const integer& n2);
+integer operator%(const integer& n1, const integer& n2);
+integer operator&(const integer& n1, const integer& n2);
+integer operator|(const integer& n1, const integer& n2);
+integer operator^(const integer& n1, const integer& n2);
+//!@}
+
+//! \name Miscellaneous functions
+//!@{
+int compare(const integer &n1, const integer &n2, bool ignoresign=false);
+size_t log2(const integer& n);
+integer gcd(const integer& num1, const integer& num2);
+integer lcm(const integer& num1, const integer& num2);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+// Template function definitions
+
+/*!
+ Constructs a new integer object with the value of the built-in signed
+ %integer passed to it.
+
+ \param[in] n A number of type \c T.
+ \tparam T The type of \c n.
+
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
+
+ \overload
+*/
+template <typename T> integer::integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_signed<T> >::type*)
+{
+ if (n >= 0) {
+ if (static_cast<T>(n & detail::digit_mask) == n)
+ _attach_1(detail::digit_t(n));
+ else _attach_n(boost::uintmax_t(n));
+ } else if (n == (std::numeric_limits<T>::min)()) {
+ // Have to treat the minimum number carefully, because -n is not
+ // what you'd think it is.
+ _attach_n(boost::uintmax_t(-(n+1)));
+ _set_negative(true);
+ --(*this);
+ } else {
+ _attach_n(boost::uintmax_t(-n));
+ _set_negative(true);
+ }
+}
+
+/*!
+ Constructs a new integer object with the value of the built-in unsigned
+ %integer passed to it.
+
+ \param[in] n A number of type \c T.
+ \tparam T The type of \c n.
+
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
+
+ \overload
+*/
+template <typename T> integer::integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_unsigned<T> >::type*)
+{
+ if (static_cast<T>(n & detail::digit_mask) == n)
+ _attach_1(detail::digit_t(n));
+ else _attach_n(boost::uintmax_t(n));
+}
+
+/*! \brief Efficiently converts from an xint::integer to a built-in %integer
+ type.
+
+\param[in] n The integer to convert.
+\tparam T The type to convert it to.
+
+\returns The numeric value of \c n, converted to the specified type.
+
+\exception exceptions::too_big if \c n would not fit into the specified type.
+*/
+template <typename T>
+T to(const integer& n) {
+ if (n < (std::numeric_limits<T>::min)()
+ || n > (std::numeric_limits<T>::max)())
+ throw exceptions::too_big("value out of range for requested "
+ "conversion");
+
+ T rval=0;
+ size_t len=n._get_length();
+ for (size_t x=0; x<len; ++x)
+ rval=static_cast<T>((rval * detail::digit_overflowbit)
+ + n._get_digit(len-x-1));
+ if (n.sign() < 0) rval *= -1;
+ return rval;
+}
+
+//! \name Stream input/output functions
+//!@{
+template <typename charT, typename traits>
+inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
+ traits>& out, const integer& n)
+{
+ int base=((out.flags() & std::ios::hex) ? 16
+ : (out.flags() & std::ios::oct) ? 8
+ : 10);
+ bool upperCase=(out.flags() & std::ios::uppercase ? true : false);
+
+ int nsign=n.sign();
+ if ((out.flags() & std::ios::showpos) && nsign >= 0) out << "+";
+
+ if (out.flags() & std::ios::showbase) {
+ if (nsign < 0) out << "-";
+
+ if (base==16 && upperCase) out << "0X";
+ else if (base==16) out << "0x";
+ else if (base==8) out << "0";
+
+ out << to_string(abs(n), base, upperCase);
+ } else {
+ out << to_string(n, base, upperCase);
+ }
+ return out;
+}
+
+template <typename charT, typename traits>
+inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
+ traits>& in, integer& n)
+{
+ int hex=(in.flags() & std::ios::hex) ? 1 : 0;
+ int dec=(in.flags() & std::ios::dec) ? 1 : 0;
+ int oct=(in.flags() & std::ios::oct) ? 1 : 0;
+ int count=hex+dec+oct;
+
+ size_t base=autobase;
+ if (count==1) {
+ if (hex) base=16;
+ else if (oct) base=8;
+ else base=10;
+ } else if (count>1) base=10;
+ // else auto-base
+
+ std::string s;
+ if (in.peek()=='+') {
+ in.ignore();
+ } else if (in.peek()=='-') {
+ in.ignore();
+ s.push_back('-');
+ }
+
+ if (base==autobase) {
+ if (in.peek()=='0') {
+ in.ignore();
+ int c=in.peek();
+ if (c=='x' || c=='X') {
+ in.ignore();
+ base=16;
+ } else base=8;
+ } else base=10;
+ }
+
+ while (in) {
+ int c=in.peek();
+ if ((base==8 && (c>='0' && c<='7')) ||
+ (base==10 && (c>='0' && c<='9')) ||
+ (base==16 && ((c>='0' && c<='9') || (c>='a' && c<='f') ||
+ (c>='A' && c<='F'))))
+ {
+ in.ignore();
+ s.push_back(char(c));
+ } else break;
+ }
+
+ try {
+ integer testValue=from_string(s, base);
+ n=testValue;
+ } catch (std::exception&) {
+ // Catch invalid strings
+ in.setstate(std::ios::failbit);
+ }
+
+ return in;
+}
+//!@}
+
+} // namespace xint
+} // namespace boost
+
+namespace std {
+template<>
+class numeric_limits<boost::xint::integer> {
+ public:
+ static const bool is_specialized = true;
+
+ static boost::xint::integer min() throw() { return 0; } // Not applicable
+ static boost::xint::integer max() throw() { return 0; } // Not applicable
+
+ static const int digits = 0; // Not applicable
+ static const int digits10 = 0; // Not applicable
+ static const bool is_signed = true;
+ static const bool is_integer = true;
+ static const bool is_exact = true;
+ static const int radix = 2;
+ static boost::xint::integer epsilon() throw() { return 0; }
+ static boost::xint::integer round_error() throw() { return 0; }
+
+ static const int min_exponent = 0; // Not applicable
+ static const int min_exponent10 = 0; // Not applicable
+ static const int max_exponent = 0; // Not applicable
+ static const int max_exponent10 = 0; // Not applicable
+
+ static const bool has_infinity = false;
+ static const bool has_quiet_NaN = false;
+ static const bool has_signaling_NaN = false;
+ static const float_denorm_style has_denorm = denorm_absent; // Not applicable
+ static const bool has_denorm_loss = false; // Not applicable
+
+ static boost::xint::integer infinity() throw() { return 0; } // Not applicable
+ static boost::xint::integer quiet_NaN() throw() { return 0; } // Not applicable
+ static boost::xint::integer signaling_NaN() throw() { return 0; } // Not applicable
+ static boost::xint::integer denorm_min() throw() { return 0; } // Not applicable
+
+ static const bool is_iec559 = false;
+ static const bool is_bounded = false;
+ static const bool is_modulo = false;
+
+ static const bool traps = true; // I assume this means exceptions?
+ static const bool tinyness_before = false; // Not applicable
+ static const float_round_style round_style = round_indeterminate; // Not applicable
+};
+} // namespace std
+
+#endif // BOOST_INCLUDED_XINT_INTEGER_HPP
Added: sandbox/xint/boost/xint/internals.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/internals.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,159 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the internal definitions required for all XInt types.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_INTERNALS_HPP
+#define BOOST_INCLUDED_XINT_INTERNALS_HPP
+
+#include <string>
+#include <limits>
+#include <cstddef> // for size_t
+#include <iostream>
+#include <stdexcept>
+#include <boost/integer.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/function.hpp>
+
+namespace boost {
+
+//! \brief All the types and functions of the library are within this namespace.
+namespace xint {
+
+//! \brief The items within this namespace are meant for internal use only.
+namespace detail {
+
+/*!
+ This is the type used for calculations. It should be the largest
+ built-in integral type the system can offer, for maximum processing
+ efficiency.
+*/
+typedef boost::uintmax_t doubledigit_t;
+
+/*!
+ This is the type used to store information about the %integer. It must
+ contain at least half the number of bits that a doubledigit_t can hold,
+ and is most memory-efficient when it's exactly that.
+*/
+typedef boost::uint_t<std::numeric_limits<doubledigit_t>::digits / 2>::fast
+ digit_t;
+
+//! \name Some constants used by the library.
+//!@{
+const size_t bits_per_digit = std::numeric_limits<digit_t>::digits;
+const digit_t digit_hibit = (digit_t(1) << (bits_per_digit-1));
+const doubledigit_t doubledigit_hibit = (doubledigit_t(1) << (bits_per_digit*2-1));
+const doubledigit_t digit_overflowbit = (doubledigit_t(1) << bits_per_digit);
+const digit_t digit_mask = digit_t(digit_overflowbit-1);
+//!@}
+
+//! Holds the text representation of the Not-a-Number value.
+const extern std::string nan_text;
+
+//! \brief Holds the magnitude digits of an integer.
+template <int digit_count=1>
+struct data_t {
+ size_t copies, length, max_length;
+ digit_t magnitude[digit_count];
+};
+
+//! \name The variable-length data_t functions.
+//!@{
+data_t<> *allocate(size_t max_digits, size_t initial_length=
+ (std::numeric_limits<size_t>::max)());
+data_t<> *reallocate(data_t<> *olddata, size_t newsize);
+data_t<> *duplicate(data_t<> *olddata, size_t extra=0);
+data_t<> *duplicate(data_t<> *olddata, data_t<> *data_to_copy, size_t extra=0);
+void deallocate(data_t<> *data);
+//!@}
+
+//! \brief The base class for the integer classes.
+class base_integer {
+ public:
+ ~base_integer();
+
+ //! \name Internal Functions
+ //@{
+ detail::digit_t _get_digit(size_t index) const;
+ detail::digit_t _get_digit(size_t index, bool) const; //!< \overload
+ detail::digit_t* _get_digits();
+ const detail::digit_t* _get_digits() const; //!< \overload
+ size_t _get_length() const;
+ bool _is_unique() const;
+ bool _is_zero() const;
+ bool _get_negative() const;
+ void _set_negative(bool neg);
+ void _cleanup();
+ void _realloc(size_t new_digit_count);
+ void _duplicate(const base_integer& copy, size_t extra);
+ void _shift_left(size_t byBits);
+ void _shift_right(size_t byBits);
+ void _add(const base_integer& n);
+ void _subtract(const base_integer& n);
+ //@}
+
+ protected:
+ base_integer(): fixed_mask(0), negative(false), data(0) { }
+ base_integer(size_t count, digit_t mask, void *d);
+
+ bool _is_nan() const { return (data==0); };
+ void _base_make_unique();
+ void _attach(data_t<> *new_data, bool neg=false);
+ void _attach(const base_integer& copy);
+ void _attach_0();
+ void _attach_1(digit_t n);
+ void _attach_n(boost::uintmax_t n);
+ void _set_n(boost::uintmax_t n);
+
+ private:
+ digit_t fixed_mask; //!< For the topmost digit; zero for variable-sized
+
+ bool negative;
+ data_t<> *data;
+};
+
+} // namespace detail
+
+//! A callback function takes no parameters and returns a bool.
+//! @see xint::is_prime
+//! @see xint::random_prime
+typedef boost::function<bool ()> callback_t;
+
+//! An empty callback_t, used as a default parameter for some functions.
+//! @see xint::is_prime
+//! @see xint::random_prime
+const callback_t no_callback;
+
+//! A value that can be used for the 'base' parameter of the string-to-integer functions
+//! @see xint::integer::integer(const std::string& str, size_t base)
+//! @see xint::from_string
+const size_t autobase=(std::numeric_limits<size_t>::max)();
+
+class integer;
+class nothrow_integer;
+template <size_t bits> class fixed_integer;
+
+//! \name Miscellaneous functions
+//!@{
+bool opt_secure_mode();
+bool opt_thread_safe();
+//!@}
+
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_INTERNALS_HPP
Copied: sandbox/xint/boost/xint/monty.hpp (from r61200, /sandbox/xint/boost/xint/xint_monty.hpp)
==============================================================================
--- /sandbox/xint/boost/xint/xint_monty.hpp (original)
+++ sandbox/xint/boost/xint/monty.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -18,12 +18,11 @@
used internally to speed up the xint::powmod function for odd modulii.
*/
-#ifndef BOOST_INCLUDED_XINT_MONTY_H
-#define BOOST_INCLUDED_XINT_MONTY_H
+#ifndef BOOST_INCLUDED_XINT_MONTY_HPP
+#define BOOST_INCLUDED_XINT_MONTY_HPP
namespace boost {
namespace xint {
-namespace core {
//! \name Montgomery Reduction functions
//!@{
@@ -36,8 +35,7 @@
integer montgomeryPowerMod(const integer& x, const integer& e, const integer& m);
//!@}
-} // namespace core
} // namespace xint
} // namespace boost
-#endif // BOOST_INCLUDED_XINT_MONTY_H
+#endif // BOOST_INCLUDED_XINT_MONTY_HPP
Added: sandbox/xint/boost/xint/nothrow_integer.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/nothrow_integer.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,398 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Declares the \c xint::nothrow_integer class.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP
+#define BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP
+
+#include "internals.hpp"
+#include "integer.hpp"
+#include <boost/type_traits.hpp>
+
+namespace boost {
+namespace xint {
+
+/*! \brief The %nothrow_integer class.
+
+ Functions using this class do not throw exceptions, they return special
+ values (most often \ref nan "Not-a-Number") to indicate failures.
+
+ There are only a few member functions; most of the functionality is
+ implemented using standalone functions.
+
+ Functions that start with an underscore (such as \c _make_unique) are
+ intended for internal use only. They may change arbitrarily in future
+ versions.
+*/
+class nothrow_integer: public detail::base_integer {
+ public:
+
+ //! \name Constructors & Destructors
+ //!@{
+ nothrow_integer();
+ nothrow_integer(const nothrow_integer& b);
+ nothrow_integer(const integer& b);
+ explicit nothrow_integer(const std::string& str, size_t base=10);
+ template <typename T> nothrow_integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type* = 0,
+ typename boost::enable_if<boost::is_signed<T> >::type* = 0);
+ template <typename T> nothrow_integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type* = 0,
+ typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+ //!@}
+
+ /*! \name Mathematical and Bitwise Operators
+ \brief These operate exactly like their counterparts for the built-in
+ %integer types.
+
+ Note that there is no \c operator~. Since the nothrow_integer type
+ doesn't have a fixed maximum size, there is no logical way to implement
+ it.
+ */
+ //@{
+ nothrow_integer& operator=(const nothrow_integer &c);
+
+ nothrow_integer& operator+=(const nothrow_integer& b);
+ nothrow_integer& operator-=(const nothrow_integer& b);
+ nothrow_integer& operator*=(const nothrow_integer& b);
+ nothrow_integer& operator/=(const nothrow_integer& b);
+ nothrow_integer& operator%=(const nothrow_integer& b);
+
+ nothrow_integer& operator++(); //!< \details Preincrement operator
+ nothrow_integer& operator--(); //!< \details Predecrement operator
+ nothrow_integer operator++(int); //!< \details Postincrement operator -- not recommended, inefficient
+ nothrow_integer operator--(int); //!< \details Postdecrement operator -- not recommended, inefficient
+
+ nothrow_integer& operator&=(const nothrow_integer& n);
+ nothrow_integer& operator|=(const nothrow_integer& n);
+ nothrow_integer& operator^=(const nothrow_integer& n);
+ nothrow_integer operator<<(size_t shift) const;
+ nothrow_integer operator>>(size_t shift) const;
+ nothrow_integer& operator<<=(size_t shift);
+ nothrow_integer& operator>>=(size_t shift);
+ //@}
+
+ //! \name Miscellaneous Functions
+ //!@{
+ bool odd() const;
+ bool even() const;
+ int sign(bool signed_zero=false) const;
+ bool is_nan() const;
+
+ size_t hex_digits() const;
+ //!@}
+
+ /*! \name Preconstructed integers
+
+ These return preconstructed integers with the values named by the
+ functions. They are used internally, so that the most common values
+ don't have to be constructed each time they're needed.
+ */
+ //@{
+ static const nothrow_integer& zero();
+ static const nothrow_integer& one();
+ static const nothrow_integer& nan();
+ //@}
+
+ /*! \name Internal Functions
+ \brief These functions allow access to the internals of the
+ %integer. They are intended for internal use only.
+ */
+ //@{
+ void _make_unique();
+ //@}
+};
+
+//! \name Mathematical primitives
+//!@{
+nothrow_integer abs(const nothrow_integer& n);
+nothrow_integer negate(const nothrow_integer& n);
+nothrow_integer add(const nothrow_integer& n, const nothrow_integer& addend);
+nothrow_integer subtract(const nothrow_integer& n, const nothrow_integer&
+ subtrahend);
+nothrow_integer multiply(const nothrow_integer& n, const nothrow_integer&
+ multiplicand);
+nothrow_integer divide(const nothrow_integer& dividend, const nothrow_integer&
+ divisor);
+std::pair<nothrow_integer, nothrow_integer> divide_r(const nothrow_integer&
+ dividend, const nothrow_integer& divisor);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//! \name Powers and roots
+//!@{
+nothrow_integer sqr(const nothrow_integer& n);
+nothrow_integer pow(const nothrow_integer& n, const nothrow_integer& exponent);
+nothrow_integer nothrow_pow2(size_t exponent);
+nothrow_integer nothrow_factorial(size_t n);
+nothrow_integer sqrt(const nothrow_integer& n);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//! \name Conversion functions
+//!@{
+template <typename T> T to(const nothrow_integer& n);
+std::string to_string(const nothrow_integer& n, size_t base=10, bool upperCase =
+ false);
+nothrow_integer nothrow_from_string(const std::string& str, size_t base=10);
+std::string to_binary(const nothrow_integer& n);
+nothrow_integer nothrow_from_binary(const std::string& s);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//! \name Bit-manipulation functions
+//!@{
+bool getbit(const nothrow_integer& n, size_t bit);
+void setbit(nothrow_integer& n, size_t bit);
+void clearbit(nothrow_integer& n, size_t bit);
+size_t lowestbit(const nothrow_integer& n, size_t valueIfZero=0);
+size_t highestbit(const nothrow_integer& n, size_t valueIfZero=0);
+nothrow_integer bitwise_and(const nothrow_integer& n1, const nothrow_integer&
+ n2);
+nothrow_integer bitwise_or (const nothrow_integer& n1, const nothrow_integer&
+ n2);
+nothrow_integer bitwise_xor(const nothrow_integer& n1, const nothrow_integer&
+ n2);
+nothrow_integer shift(const nothrow_integer& n, int byBits);
+nothrow_integer shift_left(const nothrow_integer& n, size_t byBits);
+nothrow_integer shift_right(const nothrow_integer& n, size_t byBits);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+/*! \name Modular math functions
+
+A common reason to use a large-integer library is to implement public-key
+encryption, and the algorithms for such encryption often use modular math.
+*/
+//!@{
+nothrow_integer mod(const nothrow_integer& n, const nothrow_integer& modBy);
+nothrow_integer mulmod(const nothrow_integer& n, const nothrow_integer& by,
+ const nothrow_integer& modulus);
+nothrow_integer sqrmod(const nothrow_integer& n, const nothrow_integer&
+ modulus);
+nothrow_integer powmod(const nothrow_integer& n, const nothrow_integer&
+ exponent, const nothrow_integer& modulus, bool noMontgomery=false);
+nothrow_integer invmod(const nothrow_integer& n, const nothrow_integer&
+ modulus);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//! \name Random number functions
+//!@{
+nothrow_integer nothrow_random_by_size(size_t sizeInBits, bool highBitOn=false,
+ bool lowBitOn=false, bool canBeNegative=false);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//! \name Prime number functions
+//!@{
+int is_prime(const nothrow_integer& n, callback_t callback=no_callback);
+nothrow_integer nothrow_random_prime(size_t sizeInBits, callback_t callback =
+ no_callback);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+/*! \name Operators
+
+ These act exactly the same as for the built-in %integer types.
+*/
+//!@{
+bool operator!(const nothrow_integer& n1);
+bool operator<(const nothrow_integer& n1, const nothrow_integer& n2);
+bool operator>(const nothrow_integer& n1, const nothrow_integer& n2);
+bool operator<=(const nothrow_integer& n1, const nothrow_integer& n2);
+bool operator>=(const nothrow_integer& n1, const nothrow_integer& n2);
+bool operator==(const nothrow_integer& n1, const nothrow_integer& n2);
+bool operator!=(const nothrow_integer& n1, const nothrow_integer& n2);
+
+const nothrow_integer& operator+(const nothrow_integer& a);
+nothrow_integer operator-(const nothrow_integer& a);
+nothrow_integer operator+(const nothrow_integer& n1, const nothrow_integer& n2);
+nothrow_integer operator-(const nothrow_integer& n1, const nothrow_integer& n2);
+nothrow_integer operator*(const nothrow_integer& n1, const nothrow_integer& n2);
+nothrow_integer operator/(const nothrow_integer& n1, const nothrow_integer& n2);
+nothrow_integer operator%(const nothrow_integer& n1, const nothrow_integer& n2);
+nothrow_integer operator&(const nothrow_integer& n1, const nothrow_integer& n2);
+nothrow_integer operator|(const nothrow_integer& n1, const nothrow_integer& n2);
+nothrow_integer operator^(const nothrow_integer& n1, const nothrow_integer& n2);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//! \name Miscellaneous functions
+//!@{
+int compare(const nothrow_integer &n1, const nothrow_integer &n2, bool
+ ignoresign=false);
+size_t log2(const nothrow_integer& n);
+nothrow_integer gcd(const nothrow_integer& num1, const nothrow_integer& num2);
+nothrow_integer lcm(const nothrow_integer& num1, const nothrow_integer& num2);
+//!@}
+
+////////////////////////////////////////////////////////////////////////////////
+// Template function definitions
+
+/*!
+ Constructs a new nothrow_integer object with the value of the built-in
+ signed %integer passed to it.
+
+ \param[in] n A number of type \c T.
+ \tparam T The type of \c n.
+
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
+
+ \overload
+*/
+template <typename T> nothrow_integer::nothrow_integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_signed<T> >::type*)
+{
+ try {
+ *this=nothrow_integer(xint::nothrow_integer(n));
+ } catch (std::exception&) {
+ _attach(0);
+ }
+}
+
+/*!
+ Constructs a new nothrow_integer object with the value of the built-in
+ unsigned %integer passed to it.
+
+ \param[in] n A number of type \c T.
+ \tparam T The type of \c n.
+
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
+
+ \overload
+*/
+template <typename T> nothrow_integer::nothrow_integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_unsigned<T> >::type*)
+{
+ try {
+ *this=nothrow_integer(xint::nothrow_integer(n));
+ } catch (std::exception&) {
+ _attach(0);
+ }
+}
+
+/*! \copydoc xint::to
+
+\note Returns T(0) instead of throwing.
+*/
+template <typename T>
+T to(const nothrow_integer& n) {
+ try {
+ return to<T>(xint::nothrow_integer(n));
+ } catch (std::exception&) {
+ return 0;
+ }
+}
+
+//! \name Stream input/output functions
+//!@{
+template <typename charT, typename traits>
+inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
+ traits>& out, const nothrow_integer& n)
+{
+ if (n.is_nan()) {
+ out << detail::nan_text;
+ return out;
+ } else {
+ return xint::operator<<(out, xint::nothrow_integer(n));
+ }
+}
+
+template <typename charT, typename traits>
+inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
+ traits>& in, nothrow_integer& n)
+{
+ if (in.peek()=='#') {
+ // Must be either #NaN# or an error
+ char buffer[6];
+ std::streamsize size=in.readsome(buffer, 5);
+ buffer[size]=0;
+ std::string str(buffer);
+
+ if (str==detail::nan_text) n=nothrow_integer::nan();
+ else in.setstate(std::ios::failbit);
+ } else {
+ xint::nothrow_integer nn;
+ xint::operator>>(in, nn);
+ if (in) n=nn;
+ }
+
+ return in;
+}
+//!@}
+
+} // namespace xint
+} // namespace boost
+
+namespace std {
+template<>
+class numeric_limits<boost::xint::nothrow_integer> {
+ public:
+ static const bool is_specialized = true;
+
+ static boost::xint::nothrow_integer min() throw() { return 0; } // Not applicable
+ static boost::xint::nothrow_integer max() throw() { return 0; } // Not applicable
+
+ static const int digits = 0; // Not applicable
+ static const int digits10 = 0; // Not applicable
+ static const bool is_signed = true;
+ static const bool is_integer = true;
+ static const bool is_exact = true;
+ static const int radix = 2;
+ static boost::xint::nothrow_integer epsilon() throw() { return 0; }
+ static boost::xint::nothrow_integer round_error() throw() { return 0; }
+
+ static const int min_exponent = 0; // Not applicable
+ static const int min_exponent10 = 0; // Not applicable
+ static const int max_exponent = 0; // Not applicable
+ static const int max_exponent10 = 0; // Not applicable
+
+ static const bool has_infinity = false;
+ static const bool has_quiet_NaN = true;
+ static const bool has_signaling_NaN = false;
+ static const float_denorm_style has_denorm = denorm_absent; // Not applicable
+ static const bool has_denorm_loss = false; // Not applicable
+
+ static boost::xint::nothrow_integer infinity() throw() { return 0; } // Not applicable
+ static boost::xint::nothrow_integer quiet_NaN() throw()
+ { return boost::xint::nothrow_integer::nan(); }
+ static boost::xint::nothrow_integer signaling_NaN() throw() { return 0; } // Not applicable
+ static boost::xint::nothrow_integer denorm_min() throw() { return 0; } // Not applicable
+
+ static const bool is_iec559 = false;
+ static const bool is_bounded = false;
+ static const bool is_modulo = false;
+
+ static const bool traps = false; // I assume this means exceptions?
+ static const bool tinyness_before = false; // Not applicable
+ static const float_round_style round_style = round_indeterminate; // Not applicable
+};
+} // namespace std
+
+#endif // BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP
Added: sandbox/xint/boost/xint/random.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/random.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,110 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Declares items relating to random numbers.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_RANDOM_HPP
+#define BOOST_INCLUDED_XINT_RANDOM_HPP
+
+#include "internals.hpp"
+#include <boost/random/uniform_int.hpp>
+#include <boost/random/variate_generator.hpp>
+
+namespace boost {
+namespace xint {
+
+/*! \brief A convenience class for cryptographically-secure random numbers.
+
+ Used with xint::set_random_generator to set the XInt library to use the
+ system-supplied strong random number generator.
+
+ \see \ref random
+*/
+class strong_random_generator {
+ public:
+ typedef unsigned int result_type;
+
+ strong_random_generator();
+ ~strong_random_generator();
+ result_type operator()();
+
+ static const bool has_fixed_range;
+ static const result_type min_value;
+ static const result_type max_value;
+ result_type min() const;
+ result_type max() const;
+ double entropy() const;
+
+ private:
+ struct impl_t;
+ impl_t *impl;
+};
+
+namespace detail {
+ //! The base class for random_generator.
+ struct base_random_generator {
+ typedef unsigned int result_type;
+ virtual result_type operator()()=0;
+ };
+
+ //! Support class for the random generator code.
+ template <class T>
+ struct random_generator: public base_random_generator {
+ typedef boost::uniform_int<result_type> dist_t;
+ typedef boost::variate_generator<T&, dist_t> gen_t;
+ random_generator(T *g): genobj(g), gen(*g,
+ dist_t((std::numeric_limits<result_type>::min)(),
+ (std::numeric_limits<result_type>::max)())) { }
+ result_type operator()() { return gen(); }
+ std::auto_ptr<T> genobj;
+ gen_t gen;
+ };
+
+ //! Support function \see xint::set_random_generator
+ void set_random_generator(base_random_generator *obj);
+
+ /*!
+ \return An unsigned int from the current random generator.
+ \see xint::set_random_generator
+ */
+ unsigned int get_random();
+} // namespace detail
+
+////////////////////////////////////////////////////////////////////////////////
+// Template function definitions
+
+/*! \brief Change the random generator that the library uses.
+
+\param[in] gen A pointer to the new generator to use.
+
+\warning The generator must be a heap-allocated pointer (one created with
+<code>new</code>), which the XInt library assumes ownership of. Don't pass in a
+stack-created item, don't try to delete the item that you passed in, and don't
+attempt to use it separately after passing it to this function, or the behavior
+is undefined.
+
+\remarks
+See the \ref random "Random Number page" for an example of how to use it.
+*/
+template <typename T>
+void set_random_generator(T *gen) {
+ detail::random_generator<T> *obj=new detail::random_generator<T>(gen);
+ detail::set_random_generator(obj);
+}
+
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_RANDOM_HPP
Modified: sandbox/xint/boost/xint/xint.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint.hpp (original)
+++ sandbox/xint/boost/xint/xint.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -12,1052 +12,16 @@
*/
/*! \file
- \brief The main header file for the XInt library.
-
- This is the only header that programs using the library should need to
- include.
-*/
-
-#ifndef BOOST_INCLUDED_XINT_H
-#define BOOST_INCLUDED_XINT_H
-
-#include <string>
-#include <limits>
-#include <memory> // for auto_ptr
-#include <cstddef> // for size_t
-#include <iostream>
-#include <stdexcept>
-#include <boost/integer.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/function.hpp>
-#include <boost/type_traits.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/random/uniform_int.hpp>
-#include <boost/random/variate_generator.hpp>
-
-namespace boost {
-//! \brief The common functions are within this namespace.
-namespace xint {
-
-////////////////////////////////////////////////////////////////////////////////
-// The boring-but-necessary preliminary stuff
-
-//! \brief The items within this namespace are meant for internal use only.
-namespace detail {
- /*!
- This is the type used for calculations. It should be the largest
- built-in integral type the system can offer, for maximum processing
- efficiency.
- */
- typedef boost::uintmax_t doubledigit_t;
-
- /*!
- This is the type used to store information about the %integer. It must
- contain at least half the number of bits that a doubledigit_t can hold,
- and is most memory-efficient when it's exactly that.
- */
- typedef boost::uint_t<std::numeric_limits<doubledigit_t>::digits / 2>::fast
- digit_t;
-
- //! \name Some constants used by the library.
- //!@{
- const size_t bits_per_digit = std::numeric_limits<digit_t>::digits;
- const digit_t digit_hibit = (digit_t(1) << (bits_per_digit-1));
- const doubledigit_t doubledigit_hibit = (doubledigit_t(1) << (bits_per_digit*2-1));
- const doubledigit_t digit_overflowbit = (doubledigit_t(1) << bits_per_digit);
- const digit_t digit_mask = digit_t(digit_overflowbit-1);
- //!@}
-
- //! Holds the text representation of the Not-a-Number value.
- const extern std::string nan_text;
-
- struct data_t;
-
- //! An empty struct, used in xint::token
- struct token { };
-
- //! The base class for random_generator.
- struct base_random_generator {
- typedef unsigned int result_type;
- virtual result_type operator()()=0;
- };
-
- //! Support class for the random generator code.
- template <class T>
- struct random_generator: public base_random_generator {
- typedef boost::uniform_int<result_type> dist_t;
- typedef boost::variate_generator<T&, dist_t> gen_t;
- random_generator(T *g): genobj(g), gen(*g,
- dist_t((std::numeric_limits<result_type>::min)(),
- (std::numeric_limits<result_type>::max)())) { }
- result_type operator()() { return gen(); }
- std::auto_ptr<T> genobj;
- gen_t gen;
- };
-
- //! Support function \see xint::set_random_generator
- void set_random_generator(base_random_generator *obj);
-
- /*!
- \return An unsigned int from the current random generator.
- \see xint::set_random_generator
- */
- unsigned int get_random();
-} // namespace detail
-
-//! Used for the exception-blocker.
-typedef std::auto_ptr<detail::token> token;
-
-//! A callback function takes no parameters and returns a bool.
-//! @see xint::is_prime
-//! @see xint::random_prime
-typedef boost::function<bool ()> callback_t;
-
-//! An empty callback_t, used as a default parameter for some functions.
-//! @see xint::is_prime
-//! @see xint::random_prime
-const callback_t no_callback;
-
-//! A value that can be used for the 'base' parameter of the string-to-integer functions
-//! @see xint::integer::integer(const std::string& str, size_t base)
-//! @see xint::from_string
-const size_t autobase=(std::numeric_limits<size_t>::max)();
-
-namespace blockable {
-class integer;
-} // namespace blockable
-
-/*! \brief Contains the "pure" integer type, and functions to operate on it.
-
-The types and functions in the xint::core namespace ignore exception-blocking
-and do not support the Not-a-Number value. If you attempt to assign a
-Not-a-Number to a core::integer, it will throw an xint::not_a_number exception.
-*/
-namespace core {
-
-//! \brief The base class for the integer classes.
-class base_integer {
- public:
- base_integer(): data(0) { }
- ~base_integer();
-
- //! \name Internal Functions
- //@{
- detail::data_t *_get_data() const { return data; }
- detail::digit_t _get_digit(size_t index) const;
- detail::digit_t _get_digit(size_t index, bool) const; //!< \overload
- size_t _get_length() const;
- bool _is_unique() const;
- //@}
-
- protected:
- void _attach(detail::data_t *new_data);
- void _attach(const base_integer& copy);
-
- private:
- detail::data_t *data;
-};
-
-/*! \brief The core %integer class.
-
- This class implements the "pure" \c integer type, uncontaminated by things
- like the Not-a-Number value.
-
- There are only a few member functions; most of the functionality is
- implemented using standalone functions.
-
- Functions that start with an underscore (such as \c _make_unique) are
- intended for internal use only. They may change arbitrarily in future
- versions.
-*/
-class integer: public core::base_integer {
- public:
-
- //! \name Constructors & Destructors
- //!@{
- integer();
- integer(const integer& b);
- explicit integer(const blockable::integer& b);
- explicit integer(const std::string& str, size_t base=10);
- template <typename T> integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type* = 0,
- typename boost::enable_if<boost::is_signed<T> >::type* = 0);
- template <typename T> integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type* = 0,
- typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
- //!@}
-
- /*! \name Mathematical and Bitwise Operators
- \brief These operate exactly like their counterparts for the built-in
- %integer types.
-
- Note that there is no \c operator~. Since the integer type doesn't have
- a fixed maximum size, there is no logical way to implement it.
- */
- //@{
- integer& operator=(const integer &c);
-
- integer& operator+=(const integer& b);
- integer& operator-=(const integer& b);
- integer& operator*=(const integer& b);
- integer& operator/=(const integer& b);
- integer& operator%=(const integer& b);
-
- integer& operator++(); //!< \details Preincrement operator
- integer& operator--(); //!< \details Predecrement operator
- integer operator++(int); //!< \details Postincrement operator -- not recommended, inefficient
- integer operator--(int); //!< \details Postdecrement operator -- not recommended, inefficient
-
- integer& operator&=(const integer& n);
- integer& operator|=(const integer& n);
- integer& operator^=(const integer& n);
- integer operator<<(size_t shift) const;
- integer operator>>(size_t shift) const;
- integer& operator<<=(size_t shift);
- integer& operator>>=(size_t shift);
- //@}
-
- /*! \name Preconstructed integers
-
- These return preconstructed integers with the values named by the
- functions. They are used internally, so that the most common values
- don't have to be constructed each time they're needed.
- */
- //@{
- static const integer& zero();
- static const integer& one();
- //@}
-
- //! \name Miscellaneous Functions
- //!@{
- bool odd() const;
- bool even() const;
- int sign() const;
-
- size_t hex_digits() const;
- //!@}
-
- /*! \name Internal Functions
- \brief These functions allow access to the internals of the %integer.
- They are intended for internal use only.
- */
- //@{
- void _set_negative(bool negative);
- void _make_unique();
- //@}
-
- protected: /////////////////////////////////////////////////////////////////
- void _init(detail::digit_t init=0);
- void _init(const integer &c); //!< \overload
- void _init(boost::uintmax_t n); //!< \overload
-};
-
-//! \name Mathematical primitives
-//!@{
-integer abs(const integer& n);
-integer negate(const integer& n);
-integer add(const integer& n, const integer& addend);
-integer subtract(const integer& n, const integer& subtrahend);
-integer multiply(const integer& n, const integer& multiplicand);
-integer divide(const integer& dividend, const integer& divisor);
-std::pair<integer, integer> divide_r(const integer& dividend, const integer&
- divisor);
-//!@}
-
-//! \name Powers and roots
-//!@{
-integer sqr(const integer& n);
-integer pow(const integer& n, const integer& exponent);
-integer pow2(size_t exponent);
-integer factorial(size_t n);
-integer sqrt(const integer& n);
-//!@}
-
-//! \name Conversion functions
-//!@{
-template <typename T> T to(const integer& n);
-std::string to_string(const integer& n, size_t base=10, bool upperCase=false);
-integer from_string(const std::string& str, size_t base=10);
-std::string to_binary(const integer& n);
-integer from_binary(const std::string& s);
-//!@}
-
-//! \name Bit-manipulation functions
-//!@{
-bool getbit(const integer& n, size_t bit);
-void setbit(integer& n, size_t bit);
-void clearbit(integer& n, size_t bit);
-size_t lowestbit(const integer& n, size_t valueIfZero=0);
-size_t highestbit(const integer& n, size_t valueIfZero=0);
-integer bitwise_and(const integer& n1, const integer& n2);
-integer bitwise_or (const integer& n1, const integer& n2);
-integer bitwise_xor(const integer& n1, const integer& n2);
-integer shift(const integer& n, int byBits);
-integer shift_left(const integer& n, size_t byBits);
-integer shift_right(const integer& n, size_t byBits);
-//!@}
-
-/*! \name Modular math functions
-
-A common reason to use a large-integer library is to implement public-key
-encryption, and the algorithms for such encryption often use modular math.
-*/
-//!@{
-integer mod(const integer& n, const integer& modBy);
-integer mulmod(const integer& n, const integer& by, const integer& modulus);
-integer sqrmod(const integer& n, const integer& modulus);
-integer powmod(const integer& n, const integer& exponent, const integer&
- modulus, bool noMontgomery=false);
-integer invmod(const integer& n, const integer& modulus);
-//!@}
-
-//! \name Random number functions
-//!@{
-integer random_by_size(size_t sizeInBits, bool highBitOn=false, bool
- lowBitOn=false, bool canBeNegative=false);
-//!@}
-
-//! \name Prime number functions
-//!@{
-int is_prime(const integer& n, callback_t callback=no_callback);
-integer random_prime(size_t sizeInBits, callback_t callback=no_callback);
-//!@}
-
-/*! \name Operators
-
- These act exactly the same as for the built-in %integer types.
-*/
-//!@{
-bool operator!(const integer& n1);
-bool operator<(const integer& n1, const integer& n2);
-bool operator>(const integer& n1, const integer& n2);
-bool operator<=(const integer& n1, const integer& n2);
-bool operator>=(const integer& n1, const integer& n2);
-bool operator==(const integer& n1, const integer& n2);
-bool operator!=(const integer& n1, const integer& n2);
-
-const integer& operator+(const integer& a);
-integer operator-(const integer& a);
-integer operator+(const integer& n1, const integer& n2);
-integer operator-(const integer& n1, const integer& n2);
-integer operator*(const integer& n1, const integer& n2);
-integer operator/(const integer& n1, const integer& n2);
-integer operator%(const integer& n1, const integer& n2);
-integer operator&(const integer& n1, const integer& n2);
-integer operator|(const integer& n1, const integer& n2);
-integer operator^(const integer& n1, const integer& n2);
-//!@}
-
-//! \name Miscellaneous functions
-//!@{
-int compare(const integer &n1, const integer &n2, bool ignoresign=false);
-size_t log2(const integer& n);
-integer gcd(const integer& num1, const integer& num2);
-integer lcm(const integer& num1, const integer& num2);
-//!@}
-
-} // namespace core
-
-/*! \brief Contains the blockable integer type, and functions to operate on it.
-
-The types and functions in the \c blockable namespace act just like the ones in
-the \c xint::core namespace, except that they honor exception-blocking and
-support a Not-a-Number value.
-
-\see exceptions
-\see nan
-*/
-namespace blockable {
-
-////////////////////////////////////////////////////////////////////////////////
-// The blockable integer class
-
-/*! \brief The blockable %integer class.
-
- Functions using this class can be exception-blocked. See \link exceptions
- this page\endlink for details.
-
- There are only a few member functions; most of the functionality is
- implemented using standalone functions.
-
- Functions that start with an underscore (such as \c _make_unique) are
- intended for internal use only. They may change arbitrarily in future
- versions.
-*/
-class integer: public core::base_integer {
- public:
-
- //! \name Constructors & Destructors
- //!@{
- integer();
- integer(const integer& b);
- integer(const core::integer& b);
- explicit integer(const std::string& str, size_t base=10);
- template <typename T> integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type* = 0,
- typename boost::enable_if<boost::is_signed<T> >::type* = 0);
- template <typename T> integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type* = 0,
- typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
- //!@}
-
- /*! \name Mathematical and Bitwise Operators
- \brief These operate exactly like their counterparts for the built-in
- %integer types.
-
- Note that there is no \c operator~. Since the integer type doesn't have
- a fixed maximum size, there is no logical way to implement it.
- */
- //@{
- integer& operator=(const integer &c);
-
- integer& operator+=(const integer& b);
- integer& operator-=(const integer& b);
- integer& operator*=(const integer& b);
- integer& operator/=(const integer& b);
- integer& operator%=(const integer& b);
-
- integer& operator++(); //!< \details Preincrement operator
- integer& operator--(); //!< \details Predecrement operator
- integer operator++(int); //!< \details Postincrement operator -- not recommended, inefficient
- integer operator--(int); //!< \details Postdecrement operator -- not recommended, inefficient
-
- integer& operator&=(const integer& n);
- integer& operator|=(const integer& n);
- integer& operator^=(const integer& n);
- integer operator<<(size_t shift) const;
- integer operator>>(size_t shift) const;
- integer& operator<<=(size_t shift);
- integer& operator>>=(size_t shift);
- //@}
-
- //! \name Miscellaneous Functions
- //!@{
- bool odd() const;
- bool even() const;
- int sign() const;
- bool is_nan() const;
-
- size_t hex_digits() const;
- //!@}
-
- /*! \name Preconstructed integers
-
- These return preconstructed integers with the values named by the
- functions. They are used internally, so that the most common values
- don't have to be constructed each time they're needed.
- */
- //@{
- static const integer& zero();
- static const integer& one();
- static const integer& nan();
- //@}
-
- /*! \name Internal Functions
- \brief These functions allow access to the internals of the %integer.
- They are intended for internal use only.
- */
- //@{
- void _set_negative(bool negative);
- void _make_unique();
- //@}
-
- private: /////////////////////////////////////////////////////////////////
- void _init(detail::digit_t init=0);
- void _init(const integer &c); //!< \overload
- void _init(boost::uintmax_t n); //!< \overload
-};
-
-//! \name Mathematical primitives
-//!@{
-integer abs(const integer& n);
-integer negate(const integer& n);
-integer add(const integer& n, const integer& addend);
-integer subtract(const integer& n, const integer& subtrahend);
-integer multiply(const integer& n, const integer& multiplicand);
-integer divide(const integer& dividend, const integer& divisor);
-std::pair<integer, integer> divide_r(const integer& dividend, const integer&
- divisor);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-//! \name Powers and roots
-//!@{
-integer sqr(const integer& n);
-integer pow(const integer& n, const integer& exponent);
-integer pow2(size_t exponent);
-integer factorial(size_t n);
-integer sqrt(const integer& n);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-//! \name Conversion functions
-//!@{
-template <typename T> T to(const integer& n);
-std::string to_string(const integer& n, size_t base=10, bool upperCase=false);
-integer from_string(const std::string& str, size_t base=10);
-std::string to_binary(const integer& n);
-integer from_binary(const std::string& s);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-//! \name Bit-manipulation functions
-//!@{
-bool getbit(const integer& n, size_t bit);
-void setbit(integer& n, size_t bit);
-void clearbit(integer& n, size_t bit);
-size_t lowestbit(const integer& n, size_t valueIfZero=0);
-size_t highestbit(const integer& n, size_t valueIfZero=0);
-integer bitwise_and(const integer& n1, const integer& n2);
-integer bitwise_or (const integer& n1, const integer& n2);
-integer bitwise_xor(const integer& n1, const integer& n2);
-integer shift(const integer& n, int byBits);
-integer shift_left(const integer& n, size_t byBits);
-integer shift_right(const integer& n, size_t byBits);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-/*! \name Modular math functions
-
-A common reason to use a large-integer library is to implement public-key
-encryption, and the algorithms for such encryption often use modular math.
-*/
-//!@{
-integer mod(const integer& n, const integer& modBy);
-integer mulmod(const integer& n, const integer& by, const integer& modulus);
-integer sqrmod(const integer& n, const integer& modulus);
-integer powmod(const integer& n, const integer& exponent, const integer&
- modulus, bool noMontgomery=false);
-integer invmod(const integer& n, const integer& modulus);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-//! \name Random number functions
-//!@{
-integer random_by_size(size_t sizeInBits, bool highBitOn=false, bool
- lowBitOn=false, bool canBeNegative=false);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-//! \name Prime number functions
-//!@{
-int is_prime(const integer& n, callback_t callback=no_callback);
-integer random_prime(size_t sizeInBits, callback_t callback=no_callback);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-/*! \name Operators
-
- These act exactly the same as for the built-in %integer types.
-*/
-//!@{
-bool operator!(const integer& n1);
-bool operator<(const integer& n1, const integer& n2);
-bool operator>(const integer& n1, const integer& n2);
-bool operator<=(const integer& n1, const integer& n2);
-bool operator>=(const integer& n1, const integer& n2);
-bool operator==(const integer& n1, const integer& n2);
-bool operator!=(const integer& n1, const integer& n2);
-
-const integer& operator+(const integer& a);
-integer operator-(const integer& a);
-integer operator+(const integer& n1, const integer& n2);
-integer operator-(const integer& n1, const integer& n2);
-integer operator*(const integer& n1, const integer& n2);
-integer operator/(const integer& n1, const integer& n2);
-integer operator%(const integer& n1, const integer& n2);
-integer operator&(const integer& n1, const integer& n2);
-integer operator|(const integer& n1, const integer& n2);
-integer operator^(const integer& n1, const integer& n2);
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
-//! \name Miscellaneous functions
-//!@{
-int compare(const integer &n1, const integer &n2, bool ignoresign=false);
-size_t log2(const integer& n);
-integer gcd(const integer& num1, const integer& num2);
-integer lcm(const integer& num1, const integer& num2);
-//!@}
-
-} // namespace blockable
-
-////////////////////////////////////////////////////////////////////////////////
-
-/*! \brief A convenience class for cryptographically-secure random numbers.
-
- Used with xint::set_random_generator to set the XInt library to use the
- system-supplied secure random number generator.
-
- \see \ref random
-*/
-class strong_random_generator {
- public:
- typedef unsigned int result_type;
-
- strong_random_generator();
- ~strong_random_generator();
- result_type operator()();
-
- static const bool has_fixed_range;
- static const result_type min_value;
- static const result_type max_value;
- result_type min() const;
- result_type max() const;
- double entropy() const;
-
- private:
- struct impl_t;
- impl_t *impl;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-/*! \name Exception-blocking and -allowing functions
-
- See the \ref exceptions "exception-blocking page" for details on these
- functions and how to use them.
-*/
-//!@{
-bool exceptions_allowed();
-token block_exceptions();
-token allow_exceptions();
-//!@}
-
-//! \name Random number functions
-//!@{
-template <typename T> void set_random_generator(T *gen);
-//!@}
-
-//! \name Miscellaneous functions
-//!@{
-bool opt_secure_mode();
-bool opt_thread_safe();
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-// Exception classes
-
-//! \name Exception classes
-//!@{
-/*! \brief Exception class
-
- Derived from \c std::invalid_argument.
-*/
-class invalid_base: public std::invalid_argument {
- public:
- invalid_base(const std::string& what="invalid base"): invalid_argument(what)
- { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::range_error.
-*/
-class invalid_digit: public std::range_error {
- public:
- invalid_digit(const std::string& what="invalid digit"): range_error(what)
- { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::invalid_argument.
-*/
-class invalid_modulus: public std::invalid_argument {
- public:
- invalid_modulus(const std::string& what="invalid modulus"):
- invalid_argument(what) { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::invalid_argument.
-*/
-class divide_by_zero: public std::invalid_argument {
- public:
- divide_by_zero(const std::string& what="divide by zero error"):
- invalid_argument(what) { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::invalid_argument.
-*/
-class cannot_represent: public std::invalid_argument {
- public:
- cannot_represent(const std::string& what=
- "cannot represent the requested value"): invalid_argument(what) { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::range_error.
-*/
-class too_big: public std::range_error {
- public:
- too_big(const std::string& what=
- "value out of range for requested conversion"): range_error(what) { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::runtime_error.
-
- \remarks
- Most library functions will throw an xint::not_a_number exception if you try
- to use a \link nan Not-a-Number value \endlink in them.
-
- \par
- See this page for details on Not-a-Number.
+ \brief This is the include-everything header.
*/
-class not_a_number: public std::runtime_error {
- public:
- not_a_number(const std::string& what="attempted to use a Not-a-Number"):
- runtime_error(what) { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::runtime_error.
-
- \note Cannot be blocked.
-
- \remarks
- Thrown by the xint::strong_random_generator class's constructor, if the
- system does not provide a cryptographically-secure random generator. Also
- thrown if the generator fails when asked to provide a random value, though
- this should be vanishingly rare.
-*/
-class no_strong_random: public std::runtime_error {
- public:
- no_strong_random(const std::string& what=
- "system does not have a strong random generator"):
- runtime_error(what) { }
-};
-
-/*! \brief Exception class
-
- Derived from \c std::overflow_error.
-
- \remarks
- Thrown when the library can't get enough memory to represent a number.
-*/
-class overflow_error: public std::overflow_error {
- public:
- overflow_error(const std::string& what=
- "overflow error: can't obtain enough memory to represent the requested number"):
- std::overflow_error(what) { }
-};
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-// Template function definitions
-
-/*! \brief Change the random generator that the library uses.
-
-\param[in] gen A pointer to the new generator to use.
-
-\warning The generator must be a heap-allocated pointer (one created with
-<code>new</code>), which the XInt library assumes ownership of. Don't pass in a
-stack-created item, don't try to delete the item that you passed in, and don't
-attempt to use it separately after passing it to this function, or the behavior
-is undefined.
-
-\remarks
-See the \link random Random Number page\endlink for an example of how to use it.
-*/
-template <typename T>
-void set_random_generator(T *gen) {
- detail::random_generator<T> *obj=new detail::random_generator<T>(gen);
- detail::set_random_generator(obj);
-}
-
-namespace core {
-
-/*!
- Constructs a new integer object with the value of the built-in signed
- %integer passed to it.
-
- \param[in] n A number of type \c T.
- \tparam T The type of \c n.
-
- You can ignore the \c enable_if parameters, they are there only to tell
- the compiler what types it applies to.
-
- \overload
-*/
-template <typename T> integer::integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type*,
- typename boost::enable_if<boost::is_signed<T> >::type*)
-{
- if (n >= 0) {
- if (static_cast<T>(n & detail::digit_mask) == n)
- _init(detail::digit_t(n));
- else _init(boost::uintmax_t(n));
- } else if (n == (std::numeric_limits<T>::min)()) {
- // Have to treat the minimum number carefully, because -n is not
- // what you'd think it is.
- _init(boost::uintmax_t(-(n+1)));
- _set_negative(true);
- --(*this);
- } else {
- _init(boost::uintmax_t(-n));
- _set_negative(true);
- }
-}
-
-/*!
- Constructs a new integer object with the value of the built-in unsigned
- %integer passed to it.
-
- \param[in] n A number of type \c T.
- \tparam T The type of \c n.
-
- You can ignore the \c enable_if parameters, they are there only to tell
- the compiler what types it applies to.
-
- \overload
-*/
-template <typename T> integer::integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type*,
- typename boost::enable_if<boost::is_unsigned<T> >::type*)
-{
- if (static_cast<T>(n & detail::digit_mask) == n)
- _init(detail::digit_t(n));
- else _init(boost::uintmax_t(n));
-}
-
-/*! \brief Efficiently converts from an xint::integer to a built-in %integer
- type.
-
-\param[in] n The integer to convert.
-\tparam T The type to convert it to.
-
-\returns The numeric value of \c n, converted to the specified type.
-
-\exception xint::too_big if \c n would not fit into the specified type.
-*/
-template <typename T>
-T to(const integer& n) {
- if (n < (std::numeric_limits<T>::min)()
- || n > (std::numeric_limits<T>::max)())
- throw too_big("value out of range for requested conversion");
-
- T rval=0;
- size_t len=n._get_length();
- for (size_t x=0; x<len; ++x)
- rval=static_cast<T>((rval * detail::digit_overflowbit)
- + n._get_digit(len-x-1));
- if (n.sign() < 0) rval *= -1;
- return rval;
-}
-
-//! \name Stream input/output functions
-//!@{
-template <typename charT, typename traits>
-inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
- traits>& out, const integer& n)
-{
- int base=((out.flags() & std::ios::hex) ? 16
- : (out.flags() & std::ios::oct) ? 8
- : 10);
- bool upperCase=(out.flags() & std::ios::uppercase ? true : false);
-
- int nsign=n.sign();
- if ((out.flags() & std::ios::showpos) && nsign >= 0) out << "+";
-
- if (out.flags() & std::ios::showbase) {
- if (nsign < 0) out << "-";
-
- if (base==16 && upperCase) out << "0X";
- else if (base==16) out << "0x";
- else if (base==8) out << "0";
-
- out << to_string(abs(n), base, upperCase);
- } else {
- out << to_string(n, base, upperCase);
- }
- return out;
-}
-
-template <typename charT, typename traits>
-inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
- traits>& in, integer& n)
-{
- int hex=(in.flags() & std::ios::hex) ? 1 : 0;
- int dec=(in.flags() & std::ios::dec) ? 1 : 0;
- int oct=(in.flags() & std::ios::oct) ? 1 : 0;
- int count=hex+dec+oct;
-
- size_t base=autobase;
- if (count==1) {
- if (hex) base=16;
- else if (oct) base=8;
- else base=10;
- } else if (count>1) base=10;
- // else auto-base
-
- std::string s;
- if (in.peek()=='+') {
- in.ignore();
- } else if (in.peek()=='-') {
- in.ignore();
- s.push_back('-');
- }
-
- if (base==autobase) {
- if (in.peek()=='0') {
- in.ignore();
- int c=in.peek();
- if (c=='x' || c=='X') {
- in.ignore();
- base=16;
- } else base=8;
- } else base=10;
- }
-
- while (in) {
- int c=in.peek();
- if ((base==8 && (c>='0' && c<='7')) ||
- (base==10 && (c>='0' && c<='9')) ||
- (base==16 && ((c>='0' && c<='9') || (c>='a' && c<='f') ||
- (c>='A' && c<='F'))))
- {
- in.ignore();
- s.push_back(char(c));
- } else break;
- }
-
- token allow=allow_exceptions();
- try {
- integer testValue=from_string(s, base);
- n=testValue;
- } catch (std::exception&) {
- // Catch invalid strings
- in.setstate(std::ios::failbit);
- }
-
- return in;
-}
-//!@}
-
-} // namespace core
-
-namespace blockable {
-
-/*!
- Constructs a new integer object with the value of the built-in signed
- %integer passed to it.
-
- \param[in] n A number of type \c T.
- \tparam T The type of \c n.
-
- You can ignore the \c enable_if parameters, they are there only to tell
- the compiler what types it applies to.
-
- \overload
-*/
-template <typename T> integer::integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type*,
- typename boost::enable_if<boost::is_signed<T> >::type*)
-{
- try {
- *this=integer(core::integer(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- _attach(0);
- }
-}
-
-/*!
- Constructs a new integer object with the value of the built-in unsigned
- %integer passed to it.
-
- \param[in] n A number of type \c T.
- \tparam T The type of \c n.
-
- You can ignore the \c enable_if parameters, they are there only to tell
- the compiler what types it applies to.
-
- \overload
-*/
-template <typename T> integer::integer(const T& n,
- typename boost::enable_if<boost::is_integral<T> >::type*,
- typename boost::enable_if<boost::is_unsigned<T> >::type*)
-{
- try {
- *this=integer(core::integer(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- _attach(0);
- }
-}
-
-/*! \copydoc core::to
-
-\note If exceptions are blocked, returns T(0) instead of throwing.
-*/
-template <typename T>
-T to(const integer& n) {
- try {
- return to<T>(core::integer(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
- }
-}
-
-//! \name Stream input/output functions
-//!@{
-template <typename charT, typename traits>
-inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
- traits>& out, const integer& n)
-{
- if (n.is_nan()) {
- out << detail::nan_text;
- return out;
- } else {
- return core::operator<<(out, core::integer(n));
- }
-}
-
-template <typename charT, typename traits>
-inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
- traits>& in, integer& n)
-{
- if (in.peek()=='#') {
- // Must be either #NaN# or an error
- char buffer[6];
- std::streamsize size=in.readsome(buffer, 5);
- buffer[size]=0;
- std::string str(buffer);
-
- if (str==detail::nan_text) n=integer::nan();
- else in.setstate(std::ios::failbit);
- } else {
- core::integer nn;
- core::operator>>(in, nn);
- if (in) n=nn;
- }
-
- return in;
-}
-//!@}
-
-} // namespace blockable
-namespace test = core;
+#ifndef BOOST_INCLUDED_XINT_HPP
+#define BOOST_INCLUDED_XINT_HPP
-} // namespace xint
-} // namespace boost
+#include "internals.hpp"
+#include "integer.hpp"
+#include "nothrow_integer.hpp"
+#include "random.hpp"
+#include "exceptions.hpp"
-#endif // BOOST_INCLUDED_XINT_H
+#endif // BOOST_INCLUDED_XINT_HPP
Deleted: sandbox/xint/boost/xint/xint_data_t.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint_data_t.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,99 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Internal details of an xint::integer.
-
- This file contains the declaration for the xint data structure. It should
- only be used by the library itself.
-*/
-
-#ifndef BOOST_INCLUDED_XINT_DATA_T_H
-#define BOOST_INCLUDED_XINT_DATA_T_H
-
-#if !defined(XINT_SECURE)
- #include <vector>
-#endif
-
-namespace boost {
-namespace xint {
-namespace detail {
-
-/*! \brief Holds the internal details of an xint::integer.
-
- The data for an integer is stored in a separate struct so it can be shared
- between different copies of an identical number.
-*/
-struct data_t {
- /*! \brief Holds information determining how many quick-digits to use.
-
- Smaller numbers are represented in a small array of digits that are part
- of the #data_t structure itself, so that no additional memory allocation
- is needed for them. The contents of this structure determine how many of
- them the library uses.
- */
- struct QuickDigits {
- static const size_t intbits=std::numeric_limits<unsigned int>::digits;
- static const size_t suggested=(2*intbits/bits_per_digit); //!< We want at least enough QuickDigits to hold two standard int types.
- static const size_t minimum=3; //!< The library's code is written to depend on this value, don't change it.
- static const size_t count=(suggested < minimum ? minimum : suggested);
- };
-
- size_t mLength, mAllocated;
- digit_t *digits; //!< \note The digits are stored lowest-digit-first.
- digit_t mQuickDigits[QuickDigits::count];
-
- #if !defined(XINT_SECURE)
- std::vector<digit_t> mStorage;
- #endif
-
- int mCopies;
- bool mIsNegative;
-
- public:
- data_t(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0);
- data_t(data_t *c);
- data_t(boost::uintmax_t n, bool);
-
- #if defined(XINT_SECURE)
- ~data_t();
- #endif
-
- void attach() { ++mCopies; }
- bool detach() { return (--mCopies==0); }
- void alloc(size_t digits, bool copydigits=false);
- void realloc(size_t newdigits) { alloc(newdigits, true); }
- void skipLeadingZeros();
- void copy(const data_t *c, size_t extraDigits=0);
- void zero(digit_t *p, size_t count);
-
- void quickset(digit_t d1, digit_t d2=0, digit_t d3=0);
-
- void invert();
- void negate();
-
- // These primitives ignore the signs of the parameters, and their results
- // are calculated in place.
- void add(const data_t& addend);
- void subtract(const data_t& subtrahend);
-
- // These are also calculated in place, for maximum speed.
- void shift_left(size_t byBits);
- void shift_right(size_t byBits);
-};
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-
-#endif // BOOST_INCLUDED_XINT_DATA_T_H
Deleted: sandbox/xint/boost/xint/xint_monty.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint_monty.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,43 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Internally-used functions.
-
- This file declares the functions that use the Montgomery Reduction. They are
- used internally to speed up the xint::powmod function for odd modulii.
-*/
-
-#ifndef BOOST_INCLUDED_XINT_MONTY_H
-#define BOOST_INCLUDED_XINT_MONTY_H
-
-namespace boost {
-namespace xint {
-namespace core {
-
-//! \name Montgomery Reduction functions
-//!@{
-detail::digit_t inverse0(const integer& n);
-integer montgomeryR(const integer& n);
-integer toMontgomeryForm(const integer& n, const integer& m);
-integer fromMontgomeryForm(const integer& n, const integer& m);
-integer montgomeryMultiplyMod(const integer& x, const integer& y, const integer&
- m, detail::digit_t nPrime0);
-integer montgomeryPowerMod(const integer& x, const integer& e, const integer& m);
-//!@}
-
-} // namespace core
-} // namespace xint
-} // namespace boost
-
-#endif // BOOST_INCLUDED_XINT_MONTY_H
Deleted: sandbox/xint/boost/xint/xint_test.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint_test.hpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,39 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Declares the library's self-testing functions.
-*/
-
-#ifndef BOOST_INCLUDED_XINT_TEST_H
-#define BOOST_INCLUDED_XINT_TEST_H
-
-namespace boost {
-namespace xint {
-
-//! \name Self-Testing Functions
-//!@{
-bool testBitManipulations();
-bool testAddSubtract();
-bool testMultiply();
-bool testDivideMod();
-bool testConvert();
-bool testStreams();
-bool testMontyMultiply();
-bool testMontyPowerMod();
-//!@}
-
-} // namespace xint
-} // namespace boost
-
-#endif // BOOST_INCLUDED_XINT_TEST_H
Modified: sandbox/xint/build/Jamfile.v2
==============================================================================
--- sandbox/xint/build/Jamfile.v2 (original)
+++ sandbox/xint/build/Jamfile.v2 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -9,12 +9,27 @@
;
SOURCES =
+ base_integer.cpp
+ data_t.cpp
+
+ nothrow_integer.cpp
+ nothrow_bit_manipulations.cpp
+ nothrow_compare.cpp
+ nothrow_convert.cpp
+ nothrow_gcd.cpp
+ nothrow_misc.cpp
+ nothrow_modular.cpp
+ nothrow_operators.cpp
+ nothrow_powers.cpp
+ nothrow_primes.cpp
+ nothrow_primitives.cpp
+ nothrow_random.cpp
+ nothrow_roots.cpp
+
integer.cpp
bit_manipulations.cpp
compare.cpp
convert.cpp
- data_t.cpp
- exception_blocker.cpp
gcd.cpp
misc.cpp
modular.cpp
Modified: sandbox/xint/doc/acknowledgements.html
==============================================================================
--- sandbox/xint/doc/acknowledgements.html (original)
+++ sandbox/xint/doc/acknowledgements.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,9 +38,10 @@
<li>Scott McMurray, for comments on the random number code, the Not-a-Number value, and the blockable exceptions design, and for accidentally pointing out an error in the square-root function, among other things.</li>
<li>"Pavel" for suggesting adding the algorithmic complexity of each function to the documentation, and for understanding what I was trying to explain when no one else seemed to.</li>
<li>Jeffrey Lee Hellrung, Jr., for advice on implementing move-aware objects, and for an invigorating discussion on the differing needs of an integer library versus a floating-point one, among other things.</li>
-<li>Peter Dimov, for suggesting a separate <code>xint::overflow_error</code> exception class.</li>
+<li>Peter Dimov, for suggesting a separate <code>overflow_error</code> exception class.</li>
<li>"Fred," a.k.a. "Gottlob Frege", for information on infinities.</li>
-<li>Joachim Faulhaber for a discussion of intervals and interval containers.</li>
+<li>Joachim Faulhaber, for a discussion of intervals and interval containers.</li>
+<li>Domagoj Saric, for suggesting a design that would allow for both variable-length and fixed-length integers.</li>
</ul>
<p>And the other Boost development list members who joined the discussion:</p>
<ul>
@@ -55,7 +56,7 @@
</ul>
<p>If I've forgotten anyone, please let me know and I'll correct the oversight. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/acknowledgements_8dox.html
==============================================================================
--- sandbox/xint/doc/acknowledgements_8dox.html (original)
+++ sandbox/xint/doc/acknowledgements_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/acknowledgements.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/annotated.html
==============================================================================
--- sandbox/xint/doc/annotated.html (original)
+++ sandbox/xint/doc/annotated.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,27 +28,28 @@
</div>
<div class="contents">
<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td class="indexvalue">The base class for the integer classes </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td class="indexvalue">The base class for the integer classes </td></tr>
<tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td class="indexvalue">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a> </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">boost::xint::cannot_represent</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td class="indexvalue">Holds the internal details of an xint::integer </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">boost::xint::divide_by_zero</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td class="indexvalue">The core integer class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td class="indexvalue">The blockable integer class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">boost::xint::invalid_modulus</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">boost::xint::no_strong_random</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1not__a__number.html">boost::xint::not_a_number</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1overflow__error.html">boost::xint::overflow_error</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td><td class="indexvalue">Holds information determining how many quick-digits to use </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">boost::xint::exceptions::cannot_represent</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a></td><td class="indexvalue">Holds the magnitude digits of an integer </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">boost::xint::exceptions::divide_by_zero</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td class="indexvalue">The core integer class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">boost::xint::exceptions::invalid_argument</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">boost::xint::exceptions::invalid_base</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">boost::xint::exceptions::invalid_digit</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">boost::xint::exceptions::invalid_modulus</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">boost::xint::exceptions::no_strong_random</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">boost::xint::exceptions::not_a_number</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td class="indexvalue">The nothrow_integer class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">boost::xint::exceptions::overflow_error</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td class="indexvalue">Support class for the random generator code </td></tr>
<tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td class="indexvalue">A convenience class for cryptographically-secure random numbers </td></tr>
- <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">boost::xint::detail::token</a></td><td class="indexvalue">An empty struct, used in <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a> </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1too__big.html">boost::xint::too_big</a></td><td class="indexvalue">Exception class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">boost::xint::exceptions::too_big</a></td><td class="indexvalue"></td></tr>
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/base__integer_8cpp.html (from r61200, /sandbox/xint/doc/data__t_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/data__t_8cpp.html (original)
+++ sandbox/xint/doc/base__integer_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: data_t.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: base_integer.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,17 +26,17 @@
</div>
</div>
<div class="contents">
-<h1>data_t.cpp File Reference</h1>
-<p>Contains the definitions for xint::detail::data_t member functions.
+<h1>base_integer.cpp File Reference</h1>
+<p>Contains the definitions for the <code>base_integer</code> member functions.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -46,11 +46,11 @@
</p>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for xint::detail::data_t member functions. </p>
+<p>Contains the definitions for the <code>base_integer</code> member functions. </p>
-<p>Definition in file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+<p>Definition in file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/base__integer_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/base__integer_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: base_integer.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>base_integer.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html">00020</a> <span class="preprocessor">#ifdef XINT_THREADSAFE</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor"> #define XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a><a class="code" href="namespaceboost.html">00024</a> <span class="keyword">namespace </span>boost {
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>xint {
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a94ba0c5d0b11588062116ebf6263f2cc">00028</a> <span class="keyword">namespace </span>{
+<a name="l00029"></a>00029 <span class="keyword">struct </span>zerodata_t: <span class="keyword">public</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a><> {
+<a name="l00030"></a>00030 <span class="keyword">public</span>:
+<a name="l00031"></a>00031 zerodata_t() { copies=1; length=max_length=1; *magnitude=0; }
+<a name="l00032"></a>00032 } zerodata;
+<a name="l00033"></a>00033 } <span class="comment">// namespace</span>
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer::base_integer</a>(<span class="keywordtype">size_t</span> count, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask, <span class="keywordtype">void</span> *d):
+<a name="l00036"></a>00036 fixed_mask(mask), negative(false), data(reinterpret_cast<<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a><>*>(d))
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 assert(mask != 0);
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a>=1;
+<a name="l00041"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">00041</a> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>=1;
+<a name="l00042"></a>00042 data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a>=count;
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i = data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>, *ie = i + data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a>;
+<a name="l00045"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">00045</a> <span class="keywordflow">while</span> (i != ie) *i++ = 0;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">base_integer::~base_integer</a>() {
+<a name="l00049"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a04f1087ed90152d3cc1b803b359951ab">00049</a> <span class="keywordflow">if</span> (fixed_mask != 0 && data && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a> == 1) <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a>(data);
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">base_integer::_get_digit</a>(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{
+<a name="l00053"></a>00053 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[index];
+<a name="l00054"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">00054</a> }
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">base_integer::_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (index >= data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>) <span class="keywordflow">return</span> 0;
+<a name="l00058"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4dbd638f790c50cfb2f68af5d3852372">00058</a> <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[index];
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>* <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">base_integer::_get_digits</a>() {
+<a name="l00062"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">00062</a> <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>;
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>* <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">base_integer::_get_digits</a>()<span class="keyword"> const </span>{
+<a name="l00066"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">00066</a> <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>;
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">base_integer::_get_length</a>()<span class="keyword"> const </span>{
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>;
+<a name="l00071"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">00071</a> }
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">base_integer::_duplicate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& c, <span class="keywordtype">size_t</span> extra) {
+<a name="l00074"></a>00074 negative=c.negative;
+<a name="l00075"></a>00075 data=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a>(data, c.data, extra);
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">base_integer::_attach</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *new_data, <span class="keywordtype">bool</span> neg) {
+<a name="l00079"></a>00079 assert(fixed_mask == 0);
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span> data=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a>(data, new_data);
+<a name="l00083"></a>00083 <span class="preprocessor"> #else</span>
+<a name="l00084"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee6c6d706a8dc8cdd1a16b1e65a47e2">00084</a> <span class="preprocessor"></span> <span class="keywordflow">if</span> (data && --data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a> == 0) <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a>(data);
+<a name="l00085"></a>00085 data=new_data;
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (data) ++data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a>;
+<a name="l00087"></a>00087 <span class="preprocessor"> #endif</span>
+<a name="l00088"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">00088</a> <span class="preprocessor"></span> negative=neg;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">base_integer::_attach</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& copy) {
+<a name="l00092"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">00092</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(copy.data, copy.negative);
+<a name="l00093"></a>00093 }
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">base_integer::_attach_0</a>() {
+<a name="l00096"></a>00096 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(&zerodata);
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">base_integer::_attach_1</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n) {
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (n == 0) {
+<a name="l00101"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">00101</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(&zerodata);
+<a name="l00102"></a>00102 } <span class="keywordflow">else</span> {
+<a name="l00103"></a>00103 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(1));
+<a name="l00104"></a>00104 *data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>=n;
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">base_integer::_attach_n</a>(boost::uintmax_t n) {
+<a name="l00109"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">00109</a> <span class="keyword">static</span> <span class="keywordtype">int</span> bits = std::numeric_limits<boost::uintmax_t>::digits;
+<a name="l00110"></a>00110 <span class="keyword">static</span> <span class="keywordtype">int</span> maxDigits = (bits + <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - 1) / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(maxDigits));
+<a name="l00113"></a>00113 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">_set_n</a>(n);
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">base_integer::_set_n</a>(boost::uintmax_t n) {
+<a name="l00117"></a>00117 <span class="comment">// Assumes that the proper allocation was already done</span>
+<a name="l00118"></a>00118 data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> = data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a>;
+<a name="l00119"></a>00119 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i = data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>, *ie = i + data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a>;
+<a name="l00120"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">00120</a> <span class="keywordflow">while</span> (n != 0 && i != ie) {
+<a name="l00121"></a>00121 *i++ = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
+<a name="l00122"></a>00122 n >>= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00123"></a>00123 }
+<a name="l00124"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">00124</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>();
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">base_integer::_is_unique</a>()<span class="keyword"> const </span>{
+<a name="l00128"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">00128</a> <span class="keywordflow">return</span> (!data || data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a> == 1);
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">base_integer::_is_zero</a>()<span class="keyword"> const </span>{
+<a name="l00132"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">00132</a> <span class="keywordflow">return</span> (data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> == 1 && *data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> == 0);
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">base_integer::_get_negative</a>()<span class="keyword"> const </span>{
+<a name="l00136"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">00136</a> <span class="keywordflow">return</span> negative;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">base_integer::_set_negative</a>(<span class="keywordtype">bool</span> neg) {
+<a name="l00140"></a>00140 negative=neg;
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">base_integer::_cleanup</a>() {
+<a name="l00144"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">00144</a> <span class="keywordflow">if</span> (fixed_mask) data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a>-1] &= fixed_mask;
+<a name="l00145"></a>00145 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p = data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> + data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> - 1;
+<a name="l00146"></a>00146 <span class="keywordflow">while</span> (p != data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> && *p == 0) { --data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>; --p; }
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> == 1 && *data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> == 0) negative = <span class="keyword">false</span>;
+<a name="l00148"></a>00148
+<a name="l00149"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">00149</a> }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">base_integer::_realloc</a>(<span class="keywordtype">size_t</span> new_digit_count) {
+<a name="l00152"></a>00152 assert(fixed_mask == 0);
+<a name="l00153"></a>00153 data = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">reallocate</a>(data, new_digit_count);
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">base_integer::_shift_left</a>(<span class="keywordtype">size_t</span> byBits) {
+<a name="l00157"></a>00157 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00158"></a>00158 <span class="keywordtype">size_t</span> oldLength = data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>;
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 data=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">reallocate</a>(data, data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> + bytes + 1);
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="keywordflow">if</span> (bits != 0) {
+<a name="l00163"></a>00163 <span class="comment">// Handle both bits and bytes in one pass</span>
+<a name="l00164"></a>00164 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s = data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> + oldLength - 1, *t = s + bytes + 1;
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 *t-- = *s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits);
+<a name="l00167"></a>00167 <span class="keywordflow">while</span> (s > data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>) {
+<a name="l00168"></a>00168 *t = (*s-- << bits);
+<a name="l00169"></a>00169 *t-- |= (*s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits));
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171 *t = (*s << bits);
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keywordflow">if</span> (bytes != 0) {
+<a name="l00174"></a>00174 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t = data->magnitude, *te = t + bytes;
+<a name="l00175"></a>00175 <span class="keywordflow">while</span> (t != te) *t++ = 0;
+<a name="l00176"></a>00176 }
+<a name="l00177"></a>00177 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
+<a name="l00178"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">00178</a> memmove(data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> + bytes, data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) *
+<a name="l00179"></a>00179 oldLength);
+<a name="l00180"></a>00180 memset(data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>();
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">base_integer::_shift_right</a>(<span class="keywordtype">size_t</span> byBits) {
+<a name="l00186"></a>00186 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>,
+<a name="l00187"></a>00187 bits2 = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits;
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (bytes >= data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>) {
+<a name="l00190"></a>00190 <span class="comment">// Right-shift it into oblivion.</span>
+<a name="l00191"></a>00191 data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> = 1;
+<a name="l00192"></a>00192 *data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> = 0;
+<a name="l00193"></a>00193 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits != 0) {
+<a name="l00194"></a>00194 <span class="comment">// Handle both bits and bytes in one pass</span>
+<a name="l00195"></a>00195 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t = data->magnitude, *s = data->magnitude + bytes,
+<a name="l00196"></a>00196 *se = data->magnitude + data->length - 1;
+<a name="l00197"></a>00197 <span class="keywordflow">while</span> (s!=se) {
+<a name="l00198"></a>00198 *t = (*s++ >> bits);
+<a name="l00199"></a>00199 *t++ |= (*s << bits2);
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201 *t = (*s >> bits);
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> (bytes != 0) {
+<a name="l00203"></a>00203 memset(data->magnitude + data->length - bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) *
+<a name="l00204"></a>00204 bytes);
+<a name="l00205"></a>00205 data->length -= bytes;
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>();
+<a name="l00208"></a>00208 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
+<a name="l00209"></a>00209 memmove(data->magnitude, data->magnitude + bytes, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) *
+<a name="l00210"></a>00210 (data->length - bytes));
+<a name="l00211"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">00211</a> memset(data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> + data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> - bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) *
+<a name="l00212"></a>00212 bytes);
+<a name="l00213"></a>00213 data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a> -= bytes;
+<a name="l00214"></a>00214 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>();
+<a name="l00215"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">00215</a> }
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">base_integer::_base_make_unique</a>() {
+<a name="l00219"></a>00219 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a>()) data=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a>(data);
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">base_integer::_add</a>(<span class="keyword">const</span> base_integer& n) {
+<a name="l00223"></a>00223 <span class="comment">//assert(mCopies==1);</span>
+<a name="l00224"></a>00224 <span class="comment">//assert(mLength >= addend.mLength);</span>
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 <span class="comment">// The answer to any addition problem contains, at most, one digit more</span>
+<a name="l00227"></a>00227 <span class="comment">// than the largest addend.</span>
+<a name="l00228"></a>00228 data=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">reallocate</a>(data, data->length + 1);
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 <span class="comment">// Now add the digits, starting at the least-significant digit.</span>
+<a name="l00231"></a>00231 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> carry = 0;
+<a name="l00232"></a>00232 <span class="keywordtype">size_t</span> x = 0;
+<a name="l00233"></a>00233 <span class="keywordflow">for</span> (; x < n.data->length; ++x) {
+<a name="l00234"></a>00234 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(data->magnitude[x]) +
+<a name="l00235"></a>00235 n.data->magnitude[x] + carry;
+<a name="l00236"></a>00236 <span class="keywordflow">if</span> (t >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry = 1; t -= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
+<a name="l00237"></a>00237 <span class="keywordflow">else</span> carry=0;
+<a name="l00238"></a>00238 data->magnitude[x] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="keywordflow">while</span> (carry) {
+<a name="l00242"></a>00242 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(data->magnitude[x]) + 1;
+<a name="l00243"></a>00243 <span class="keywordflow">if</span> (t >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry = 1; t -= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
+<a name="l00244"></a>00244 <span class="keywordflow">else</span> carry=0;
+<a name="l00245"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">00245</a> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[x] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
+<a name="l00246"></a>00246 ++x;
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>();
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">base_integer::_subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& n) {
+<a name="l00253"></a>00253 <span class="comment">//assert(mCopies==1);</span>
+<a name="l00254"></a>00254 <span class="comment">//assert(mLength >= subtrahend.mLength);</span>
+<a name="l00255"></a>00255
+<a name="l00256"></a>00256 <span class="comment">// For subtraction, the answer will always be less than or equal to the</span>
+<a name="l00257"></a>00257 <span class="comment">// size of the longest operand, so we've already got enough room.</span>
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 <span class="comment">// Now subtract the digits, starting at the least-significant one.</span>
+<a name="l00260"></a>00260 <span class="keywordtype">size_t</span> x;
+<a name="l00261"></a>00261 <span class="keywordtype">int</span> borrow = 0;
+<a name="l00262"></a>00262 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t;
+<a name="l00263"></a>00263 <span class="keywordflow">for</span> (x = 0; x < n.data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>; ++x) {
+<a name="l00264"></a>00264 t=(data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[x] + <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) - n.data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[x] -
+<a name="l00265"></a>00265 borrow;
+<a name="l00266"></a>00266 if (t < <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow = 1;
+<a name="l00267"></a>00267 <span class="keywordflow">else</span> { borrow = 0; t -= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
+<a name="l00268"></a>00268 data->magnitude[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
+<a name="l00269"></a>00269 }
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 <span class="keywordflow">for</span> (; x < data->length && borrow; ++x) {
+<a name="l00272"></a>00272 t = (data->magnitude[x] + <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) - borrow;
+<a name="l00273"></a>00273 <span class="keywordflow">if</span> (t < <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow=1;
+<a name="l00274"></a>00274 <span class="keywordflow">else</span> { borrow = 0; t -= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
+<a name="l00275"></a>00275 data->magnitude[x] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
+<a name="l00276"></a>00276 }
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>();
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (borrow != 0) negative=!negative;
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 } <span class="comment">// namespace detail</span>
+<a name="l00283"></a>00283 } <span class="comment">// namespace xint</span>
+<a name="l00284"></a>00284 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Modified: sandbox/xint/doc/bit__manipulations_8cpp.html
==============================================================================
--- sandbox/xint/doc/bit__manipulations_8cpp.html (original)
+++ sandbox/xint/doc/bit__manipulations_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,47 +36,42 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core::getbit</a> (const integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core::setbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core::clearbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core::shift</a> (const integer &n, int byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core::shift_left</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core::shift_right</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">boost::xint::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">boost::xint::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">boost::xint::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint::shift_right</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the bit-manipulation functions. </p>
<p>Definition in file <a class="el" href="bit__manipulations_8cpp_source.html">bit_manipulations.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/bit__manipulations_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/bit__manipulations_8cpp_source.html (original)
+++ sandbox/xint/doc/bit__manipulations_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,152 +38,144 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00020"></a>00020
-<a name="l00021"></a><a class="code" href="namespaceboost_1_1xint.html">00021</a> <span class="keyword">namespace </span>boost {
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023
-<a name="l00024"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html">00024</a> <span class="keyword">using namespace </span>detail;
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>core {
-<a name="l00027"></a>00027
-<a name="l00036"></a>00036 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00037"></a>00037 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00038"></a>00038 <span class="keywordflow">if</span> (index < n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()) {
-<a name="l00039"></a>00039 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00040"></a>00040 <span class="keywordflow">return</span> ((n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(index) & mask) != 0);
-<a name="l00041"></a>00041 } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00051"></a>00051 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00052"></a>00052 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00053"></a>00053 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (index >= n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()) ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(index+1);
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00059"></a>00059 ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] |= mask;
-<a name="l00060"></a>00060 ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (index < n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()) {
-<a name="l00073"></a>00073 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00074"></a>00074 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00075"></a>00075 n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] &= ~mask;
-<a name="l00076"></a>00076 n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00089"></a>00089 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00093"></a>00093 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *pe=p+ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00094"></a>00094 <span class="keywordflow">while</span> (p!=pe && *p==0) ++p;
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keywordtype">size_t</span> index=(p - ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>);
-<a name="l00097"></a>00097 <span class="keywordtype">size_t</span> r=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * index);
-<a name="l00098"></a>00098 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> digit=*p;
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">using namespace </span>detail;
+<a name="l00024"></a>00024
+<a name="l00033"></a>00033 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00034"></a>00034 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00035"></a>00035 <span class="keywordflow">if</span> (index < n._get_length()) {
+<a name="l00036"></a>00036 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00037"></a>00037 <span class="keywordflow">return</span> ((n._get_digit(index) & mask) != 0);
+<a name="l00038"></a>00038 } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00049"></a>00049 n._make_unique();
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (index >= n._get_length()) n._realloc(index+1);
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00055"></a>00055 n._get_digits()[index] |= mask;
+<a name="l00056"></a>00056 n._cleanup();
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00066"></a>00066 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00067"></a>00067 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (index < n._get_length()) {
+<a name="l00069"></a>00069 n._make_unique();
+<a name="l00070"></a>00070 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00071"></a>00071 n._get_digits()[index] &= ~mask;
+<a name="l00072"></a>00072 n._cleanup();
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075
+<a name="l00085"></a>00085 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (n.sign()==0) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=n._get_digits(), *pe=p+n._get_length();
+<a name="l00089"></a>00089 <span class="keywordflow">while</span> (p!=pe && *p==0) ++p;
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keywordtype">size_t</span> index=(p - n._get_digits());
+<a name="l00092"></a>00092 <span class="keywordtype">size_t</span> r=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * index);
+<a name="l00093"></a>00093 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> digit=*p;
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keywordflow">while</span> ((digit & 0x01)==0) {
+<a name="l00096"></a>00096 digit>>=1;
+<a name="l00097"></a>00097 ++r;
+<a name="l00098"></a>00098 }
<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="keywordflow">while</span> ((digit & 0x01)==0) {
-<a name="l00101"></a>00101 digit>>=1;
-<a name="l00102"></a>00102 ++r;
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keywordflow">return</span> r;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00117"></a>00117 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
-<a name="l00119"></a>00119 <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(n)-1);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00128"></a>00128 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
-<a name="l00129"></a>00129 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> (smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->mLength) std::swap(smaller, larger);
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
-<a name="l00133"></a>00133 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00134"></a>00134 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> r;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102
+<a name="l00112"></a>00112 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (n.sign()==0) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00114"></a>00114 <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(n)-1);
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116
+<a name="l00123"></a>00123 integer <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00124"></a>00124 <span class="keywordtype">bool</span> n1larger=(n1._get_length() > n2._get_length());
+<a name="l00125"></a>00125 <span class="keyword">const</span> integer& smaller(n1larger ? n2 : n1), larger(n1larger ? n1 : n2);
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 integer r;
+<a name="l00128"></a>00128 r._realloc(smaller._get_length());
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller._get_digits(), *s1e=s1+smaller._get_length(),
+<a name="l00131"></a>00131 *s2=larger._get_digits();
+<a name="l00132"></a>00132 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=r._get_digits();
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="keywordflow">while</span> (s1 < s1e) *t++ = *s1++ & *s2++;
<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, *s2=larger->digits;
-<a name="l00137"></a>00137 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="keywordflow">while</span> (s1 < s1e) *t++ = *s1++ & *s2++;
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00142"></a>00142 <span class="keywordflow">return</span> r;
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144
-<a name="l00151"></a>00151 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
-<a name="l00152"></a>00152 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> (smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->mLength) std::swap(smaller, larger);
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
-<a name="l00156"></a>00156 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00157"></a>00157 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->mLength);
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00160"></a>00160 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
-<a name="l00161"></a>00161 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ | *s2++;
-<a name="l00164"></a>00164 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> r;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00177"></a>00177 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
-<a name="l00178"></a>00178 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00179"></a>00179 <span class="keywordflow">if</span> (smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->mLength) std::swap(smaller, larger);
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
-<a name="l00182"></a>00182 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00183"></a>00183 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->mLength);
+<a name="l00136"></a>00136 r._cleanup();
+<a name="l00137"></a>00137 <span class="keywordflow">return</span> r;
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139
+<a name="l00146"></a>00146 integer <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00147"></a>00147 <span class="keywordtype">bool</span> n1larger=(n1._get_length() > n2._get_length());
+<a name="l00148"></a>00148 <span class="keyword">const</span> integer& smaller(n1larger ? n2 : n1), larger(n1larger ? n1 : n2);
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 integer r;
+<a name="l00151"></a>00151 r._realloc(larger._get_length());
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller._get_digits(), *s1e=s1+smaller._get_length();
+<a name="l00154"></a>00154 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger._get_digits(), *s2e=s2+larger._get_length();
+<a name="l00155"></a>00155 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=r._get_digits();
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ | *s2++;
+<a name="l00158"></a>00158 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 r._cleanup();
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> r;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163
+<a name="l00171"></a>00171 integer <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00172"></a>00172 <span class="keywordtype">bool</span> n1larger=(n1._get_length() > n2._get_length());
+<a name="l00173"></a>00173 <span class="keyword">const</span> integer& smaller(n1larger ? n2 : n1), larger(n1larger ? n1 : n2);
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 integer r;
+<a name="l00176"></a>00176 r._realloc(larger._get_length());
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller._get_digits(), *s1e=s1+smaller._get_length();
+<a name="l00179"></a>00179 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger._get_digits(), *s2e=s2+larger._get_length();
+<a name="l00180"></a>00180 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=r._get_digits();
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ ^ *s2++;
+<a name="l00183"></a>00183 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00186"></a>00186 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
-<a name="l00187"></a>00187 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00185"></a>00185 r._cleanup();
+<a name="l00186"></a>00186 <span class="keywordflow">return</span> r;
+<a name="l00187"></a>00187 }
<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ ^ *s2++;
-<a name="l00190"></a>00190 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00193"></a>00193 <span class="keywordflow">return</span> r;
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00204"></a>00204 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits) {
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
-<a name="l00206"></a>00206 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(n, -byBits);
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208
-<a name="l00216"></a>00216 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
-<a name="l00217"></a>00217 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> nn(n);
-<a name="l00220"></a>00220 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00221"></a>00221 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(byBits);
-<a name="l00222"></a>00222 <span class="keywordflow">return</span> nn;
-<a name="l00223"></a>00223 }
-<a name="l00224"></a>00224
-<a name="l00232"></a>00232 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> nn(n);
-<a name="l00236"></a>00236 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00237"></a>00237 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(byBits);
-<a name="l00238"></a>00238 <span class="keywordflow">return</span> nn;
-<a name="l00239"></a>00239 }
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 } <span class="comment">// namespace core</span>
-<a name="l00242"></a>00242 } <span class="comment">// namespace xint</span>
-<a name="l00243"></a>00243 } <span class="comment">// namespace boost</span>
+<a name="l00197"></a>00197 integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">int</span> byBits) {
+<a name="l00198"></a>00198 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
+<a name="l00199"></a>00199 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(n, -byBits);
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00209"></a>00209 integer <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00210"></a>00210 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
+<a name="l00211"></a>00211
+<a name="l00212"></a>00212 integer nn(n);
+<a name="l00213"></a>00213 nn._make_unique();
+<a name="l00214"></a>00214 nn._shift_left(byBits);
+<a name="l00215"></a>00215 <span class="keywordflow">return</span> nn;
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217
+<a name="l00225"></a>00225 integer <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00226"></a>00226 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 integer nn(n);
+<a name="l00229"></a>00229 nn._make_unique();
+<a name="l00230"></a>00230 nn._shift_right(byBits);
+<a name="l00231"></a>00231 <span class="keywordflow">return</span> nn;
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233
+<a name="l00234"></a>00234 } <span class="comment">// namespace xint</span>
+<a name="l00235"></a>00235 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__bit__manipulations_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__bit__manipulations_8cpp.html (original)
+++ sandbox/xint/doc/blockable__bit__manipulations_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_bit_manipulations.cpp File Reference</h1>
-<p>Contains the bit-manipulation functions for blockable integers.
+<p>Contains the bit-manipulation functions for <code>nothrow_integers</code>.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,36 +36,31 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable::getbit</a> (const integer &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable::setbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable::clearbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable::shift</a> (const integer &n, int byBits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable::shift_left</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable::shift_right</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a125277404ae139bee70547f2d51d3e0e">boost::xint::getbit</a> (const nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac76235b31dcadded8193443b78743948">boost::xint::setbit</a> (nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6b82b4f0911b258e82b9c11b4413c8bf">boost::xint::clearbit</a> (nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a09477129544d4bdb08ddd63644683f5c">boost::xint::lowestbit</a> (const nothrow_integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab817edabf5a6709c753dc6c07186ea75">boost::xint::highestbit</a> (const nothrow_integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abd4c2a471ad1e603ce5ef032071dd2ef">boost::xint::bitwise_and</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1221efa42739f309024e1715adc58917">boost::xint::bitwise_or</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab4996f013ac222b53bea0b46ff95e1df">boost::xint::bitwise_xor</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad62ca08dc3d7600eee872dc5a95c338c">boost::xint::shift</a> (const nothrow_integer &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4bc41e443d230352f7c099e60f4056f4">boost::xint::shift_left</a> (const nothrow_integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a295196e5fa8931578d27468cb5154f07">boost::xint::shift_right</a> (const nothrow_integer &n, size_t byBits)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the bit-manipulation functions for blockable integers. </p>
+<p>Contains the bit-manipulation functions for <code>nothrow_integers</code>. </p>
<p>Definition in file <a class="el" href="blockable__bit__manipulations_8cpp_source.html">blockable_bit_manipulations.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__bit__manipulations_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__bit__manipulations_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__bit__manipulations_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,110 +41,108 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
-<a name="l00022"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html">00022</a> <span class="keyword">namespace </span>blockable {
-<a name="l00023"></a>00023
-<a name="l00028"></a>00028 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
-<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), bit);
-<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00033"></a>00033 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00034"></a>00034 }
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036
-<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00039"></a>00039 <span class="keywordflow">try</span> {
-<a name="l00040"></a>00040 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a> nn(n);
-<a name="l00041"></a>00041 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(nn, bit);
-<a name="l00042"></a>00042 n=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(nn);
-<a name="l00043"></a>00043 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00049"></a>00049 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00050"></a>00050 <span class="keywordflow">try</span> {
-<a name="l00051"></a>00051 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a> nn(n);
-<a name="l00052"></a>00052 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a>(nn, bit);
-<a name="l00053"></a>00053 n=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(nn);
-<a name="l00054"></a>00054 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00063"></a>00063 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00064"></a>00064 <span class="keywordflow">try</span> {
-<a name="l00065"></a>00065 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), valueIfZero);
-<a name="l00066"></a>00066 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00068"></a>00068 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00076"></a>00076 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00077"></a>00077 <span class="keywordflow">try</span> {
-<a name="l00078"></a>00078 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), valueIfZero);
-<a name="l00079"></a>00079 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00080"></a>00080 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00081"></a>00081 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00086"></a>00086 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2) {
-<a name="l00087"></a>00087 <span class="keywordflow">try</span> {
-<a name="l00088"></a>00088 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n1), <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n2)));
-<a name="l00089"></a>00089 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00091"></a>00091 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00096"></a>00096 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2) {
-<a name="l00097"></a>00097 <span class="keywordflow">try</span> {
-<a name="l00098"></a>00098 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n1), <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n2)));
-<a name="l00099"></a>00099 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00101"></a>00101 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00106"></a>00106 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2) {
-<a name="l00107"></a>00107 <span class="keywordflow">try</span> {
-<a name="l00108"></a>00108 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n1), <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n2)));
-<a name="l00109"></a>00109 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00111"></a>00111 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114
-<a name="l00116"></a>00116 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits) {
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(n, byBits);
-<a name="l00118"></a>00118 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(n, -byBits);
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120
-<a name="l00122"></a>00122 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
-<a name="l00123"></a>00123 <span class="keywordflow">try</span> {
-<a name="l00124"></a>00124 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), byBits));
-<a name="l00125"></a>00125 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00127"></a>00127 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130
-<a name="l00132"></a>00132 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
-<a name="l00133"></a>00133 <span class="keywordflow">try</span> {
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), byBits));
-<a name="l00135"></a>00135 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00137"></a>00137 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 } <span class="comment">// namespace blockable</span>
-<a name="l00142"></a>00142 } <span class="comment">// namespace xint</span>
-<a name="l00143"></a>00143 } <span class="comment">// namespace boost</span>
+<a name="l00022"></a>00022
+<a name="l00027"></a>00027 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00028"></a>00028 <span class="keywordflow">try</span> {
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(xint::integer(n), bit);
+<a name="l00030"></a>00030 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00031"></a>00031 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00032"></a>00032 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00037"></a>00037 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(nothrow_integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00038"></a>00038 <span class="keywordflow">try</span> {
+<a name="l00039"></a>00039 xint::integer nn(n);
+<a name="l00040"></a>00040 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(nn, bit);
+<a name="l00041"></a>00041 n=nothrow_integer(nn);
+<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(nothrow_integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00049"></a>00049 <span class="keywordflow">try</span> {
+<a name="l00050"></a>00050 xint::integer nn(n);
+<a name="l00051"></a>00051 <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(nn, bit);
+<a name="l00052"></a>00052 n=nothrow_integer(nn);
+<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00062"></a>00062 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00063"></a>00063 <span class="keywordflow">try</span> {
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(xint::integer(n), valueIfZero);
+<a name="l00065"></a>00065 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00066"></a>00066 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00067"></a>00067 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070
+<a name="l00075"></a>00075 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00076"></a>00076 <span class="keywordflow">try</span> {
+<a name="l00077"></a>00077 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(xint::integer(n), valueIfZero);
+<a name="l00078"></a>00078 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00080"></a>00080 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083
+<a name="l00085"></a>00085 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00086"></a>00086 <span class="keywordflow">try</span> {
+<a name="l00087"></a>00087 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00088"></a>00088 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00089"></a>00089 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00090"></a>00090 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00095"></a>00095 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00096"></a>00096 <span class="keywordflow">try</span> {
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00098"></a>00098 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00099"></a>00099 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00100"></a>00100 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103
+<a name="l00105"></a>00105 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00106"></a>00106 <span class="keywordflow">try</span> {
+<a name="l00107"></a>00107 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00108"></a>00108 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00110"></a>00110 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113
+<a name="l00115"></a>00115 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">int</span> byBits) {
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
+<a name="l00117"></a>00117 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(n, -byBits);
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119
+<a name="l00121"></a>00121 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00122"></a>00122 <span class="keywordflow">try</span> {
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(xint::integer(n), byBits));
+<a name="l00124"></a>00124 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00126"></a>00126 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129
+<a name="l00131"></a>00131 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00132"></a>00132 <span class="keywordflow">try</span> {
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(xint::integer(n), byBits));
+<a name="l00134"></a>00134 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00136"></a>00136 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 } <span class="comment">// namespace xint</span>
+<a name="l00141"></a>00141 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__compare_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__compare_8cpp.html (original)
+++ sandbox/xint/doc/blockable__compare_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_compare.cpp File Reference</h1>
-<p>Contains the the compare function and comparison operators for blockable integers.
+<p>Contains the the compare function and comparison operators for nothrow_integers.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,36 +36,31 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2745c08384519957ceaf26c3e421d485">boost::xint::compare</a> (const nothrow_integer &b1, const nothrow_integer &b2, bool ignoresign)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable::operator!</a> (const integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable::operator==</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable::operator<</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable::operator></a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad1ffadda01cf8e0b230178a9325d96dc">boost::xint::operator!</a> (const nothrow_integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#accccaec2c2a8ccfadfc559adbb7ff6ed">boost::xint::operator==</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a43189615a1bfb4904c969efe846cefc6">boost::xint::operator!=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aab98cd20fa3761900de197363bac0fcb">boost::xint::operator<</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a002b54ae65c6c265d773e7b491bd90fb">boost::xint::operator></a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8a72cb95a5e25a310215eaa2cc93349f">boost::xint::operator<=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2e213ecd798c6bc331460dff13b35173">boost::xint::operator>=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the the compare function and comparison operators for blockable integers. </p>
+<p>Contains the the compare function and comparison operators for nothrow_integers. </p>
<p>Definition in file <a class="el" href="blockable__compare_8cpp_source.html">blockable_compare.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__compare_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__compare_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__compare_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,56 +41,54 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00029"></a>00029 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(<span class="keyword">const</span> integer &b1, <span class="keyword">const</span> integer &b2, <span class="keywordtype">bool</span> ignoresign) {
-<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(core::integer(b1), core::integer(b2));
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>{
-<a name="l00039"></a>00039 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00040"></a>00040 <span class="keywordtype">bool</span> cmp(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2, <span class="keyword">const</span> T& t) {
-<a name="l00041"></a>00041 <span class="keywordflow">try</span> {
-<a name="l00042"></a>00042 <span class="keywordflow">return</span> t(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(core::integer(num1), core::integer(num2)), 0);
-<a name="l00043"></a>00043 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00045"></a>00045 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048 } <span class="comment">// namespace</span>
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a>(<span class="keyword">const</span> integer &num1) {
-<a name="l00051"></a>00051 <span class="keywordflow">try</span> {
-<a name="l00052"></a>00052 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a>(core::integer(num1));
-<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00055"></a>00055 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">operator==</a>(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2) {
-<a name="l00060"></a>00060 <span class="keywordflow">return</span> cmp(num1, num2, std::equal_to<int>()); }
-<a name="l00061"></a>00061 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">operator!=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00062"></a>00062 <span class="keywordflow">return</span> cmp(num1, num2, std::not_equal_to<int>()); }
-<a name="l00063"></a>00063 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">operator<</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> cmp(num1, num2, std::less<int>()); }
-<a name="l00065"></a>00065 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">operator></a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00066"></a>00066 <span class="keywordflow">return</span> cmp(num1, num2, std::greater<int>()); }
-<a name="l00067"></a>00067 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">operator<=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> cmp(num1, num2, std::less_equal<int>()); }
-<a name="l00069"></a>00069 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">operator>=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> cmp(num1, num2, std::greater_equal<int>()); }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 } <span class="comment">// namespace blockable</span>
-<a name="l00073"></a>00073 } <span class="comment">// namespace xint</span>
-<a name="l00074"></a>00074 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a2745c08384519957ceaf26c3e421d485">compare</a>(<span class="keyword">const</span> nothrow_integer &b1, <span class="keyword">const</span> nothrow_integer &b2, <span class="keywordtype">bool</span> ignoresign) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a2745c08384519957ceaf26c3e421d485">compare</a>(xint::integer(b1), xint::integer(b2));
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00033"></a>00033 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">namespace </span>{
+<a name="l00038"></a>00038 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00039"></a>00039 <span class="keywordtype">bool</span> cmp(<span class="keyword">const</span> nothrow_integer &num1, <span class="keyword">const</span> nothrow_integer &num2, <span class="keyword">const</span> T& t) {
+<a name="l00040"></a>00040 <span class="keywordflow">try</span> {
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> t(<a class="code" href="namespaceboost_1_1xint.html#a2745c08384519957ceaf26c3e421d485">compare</a>(xint::integer(num1), xint::integer(num2)), 0);
+<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00044"></a>00044 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 } <span class="comment">// namespace</span>
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ad1ffadda01cf8e0b230178a9325d96dc">operator!</a>(<span class="keyword">const</span> nothrow_integer &num1) {
+<a name="l00050"></a>00050 <span class="keywordflow">try</span> {
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ad1ffadda01cf8e0b230178a9325d96dc">operator!</a>(xint::integer(num1));
+<a name="l00052"></a>00052 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00053"></a>00053 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00054"></a>00054 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#accccaec2c2a8ccfadfc559adbb7ff6ed">operator==</a>(<span class="keyword">const</span> nothrow_integer &num1, <span class="keyword">const</span> nothrow_integer &num2) {
+<a name="l00059"></a>00059 <span class="keywordflow">return</span> cmp(num1, num2, std::equal_to<int>()); }
+<a name="l00060"></a>00060 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a43189615a1bfb4904c969efe846cefc6">operator!=</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00061"></a>00061 <span class="keywordflow">return</span> cmp(num1, num2, std::not_equal_to<int>()); }
+<a name="l00062"></a>00062 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aab98cd20fa3761900de197363bac0fcb">operator<</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00063"></a>00063 <span class="keywordflow">return</span> cmp(num1, num2, std::less<int>()); }
+<a name="l00064"></a>00064 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a002b54ae65c6c265d773e7b491bd90fb">operator></a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> cmp(num1, num2, std::greater<int>()); }
+<a name="l00066"></a>00066 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a8a72cb95a5e25a310215eaa2cc93349f">operator<=</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> cmp(num1, num2, std::less_equal<int>()); }
+<a name="l00068"></a>00068 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a2e213ecd798c6bc331460dff13b35173">operator>=</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> cmp(num1, num2, std::greater_equal<int>()); }
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 } <span class="comment">// namespace xint</span>
+<a name="l00072"></a>00072 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__convert_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__convert_8cpp.html (original)
+++ sandbox/xint/doc/blockable__convert_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_convert.cpp File Reference</h1>
-<p>Contains the conversion functions for blockable integers.
+<p>Contains the conversion functions for nothrow_integers.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,30 +36,25 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable::from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable::from_binary</a> (const std::string &str)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable::to_binary</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">boost::xint::to_string</a> (const nothrow_integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">boost::xint::nothrow_from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">boost::xint::nothrow_from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">boost::xint::to_binary</a> (const nothrow_integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the conversion functions for blockable integers. </p>
-<p>Note that the xint::blockable::to<T> function is not here, because it's a template function and must be defined in a header file. </p>
+<p>Contains the conversion functions for nothrow_integers. </p>
+<p>Note that the xint::to<T> function is not here, because it's a template function and must be defined in a header file. </p>
<p>Definition in file <a class="el" href="blockable__convert_8cpp_source.html">blockable_convert.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__convert_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__convert_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__convert_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,52 +41,50 @@
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
<a name="l00024"></a>00024 <span class="keyword">namespace </span>xint {
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>blockable {
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="keyword">using namespace </span>detail;
-<a name="l00028"></a>00028
-<a name="l00034"></a>00034 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
-<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
-<a name="l00036"></a>00036 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a>(core::integer(n), base, uppercase);
-<a name="l00037"></a>00037 } <span class="keywordflow">catch</span> (exception&) {
-<a name="l00038"></a>00038 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00039"></a>00039 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00044"></a>00044 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
-<a name="l00045"></a>00045 <span class="keywordflow">try</span> {
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00047"></a>00047 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">core::from_string</a>(str, base));
-<a name="l00048"></a>00048 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00049"></a>00049 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00050"></a>00050 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00055"></a>00055 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">from_binary</a>(<span class="keyword">const</span> std::string& str) {
-<a name="l00056"></a>00056 <span class="keywordflow">try</span> {
-<a name="l00057"></a>00057 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">core::from_binary</a>(str));
-<a name="l00058"></a>00058 } <span class="keywordflow">catch</span> (exception&) {
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00060"></a>00060 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00065"></a>00065 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00066"></a>00066 <span class="keywordflow">try</span> {
-<a name="l00067"></a>00067 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a>(core::integer(n));
-<a name="l00068"></a>00068 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00070"></a>00070 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 } <span class="comment">// namespace blockable</span>
-<a name="l00075"></a>00075 } <span class="comment">// namespace xint</span>
-<a name="l00076"></a>00076 } <span class="comment">// namespace boost</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">using namespace </span>detail;
+<a name="l00027"></a>00027
+<a name="l00036"></a>00036 std::string <a class="code" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">to_string</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
+<a name="l00037"></a>00037 <span class="keywordflow">try</span> {
+<a name="l00038"></a>00038 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">to_string</a>(xint::integer(n), base, uppercase);
+<a name="l00039"></a>00039 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00041"></a>00041 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00049"></a>00049 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">nothrow_from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00050"></a>00050 <span class="keywordflow">try</span> {
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">xint::from_string</a>(str, base));
+<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00055"></a>00055 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00060"></a>00060 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">nothrow_from_binary</a>(<span class="keyword">const</span> std::string& str) {
+<a name="l00061"></a>00061 <span class="keywordflow">try</span> {
+<a name="l00062"></a>00062 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">xint::from_binary</a>(str));
+<a name="l00063"></a>00063 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00064"></a>00064 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00065"></a>00065 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068
+<a name="l00070"></a>00070 std::string <a class="code" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">to_binary</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00071"></a>00071 <span class="keywordflow">try</span> {
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">to_binary</a>(xint::integer(n));
+<a name="l00073"></a>00073 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00075"></a>00075 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 } <span class="comment">// namespace xint</span>
+<a name="l00080"></a>00080 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__gcd_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__gcd_8cpp.html (original)
+++ sandbox/xint/doc/blockable__gcd_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_gcd.cpp File Reference</h1>
-<p>Greatest Common Denominator and Least Common Multple for blockable integers.
+<p>Greatest Common Denominator and Least Common Multple for <code>nothrow_integers</code>.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,32 +36,22 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable::gcd</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable::lcm</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable::invmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3ae2716e04bebbb74be08845db7132e2">boost::xint::gcd</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8782636245af4772735f6e7510a7d3da">boost::xint::lcm</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Greatest Common Denominator and Least Common Multple for blockable integers. </p>
-<p>Also holds the definition for invmod, since it uses the GCD algorithm. </p>
+<p>Greatest Common Denominator and Least Common Multple for <code>nothrow_integers</code>. </p>
<p>Definition in file <a class="el" href="blockable__gcd_8cpp_source.html">blockable_gcd.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__gcd_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__gcd_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__gcd_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -37,44 +37,33 @@
<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
-<a name="l00021"></a>00021 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
-<a name="l00024"></a>00024 <span class="keyword">namespace </span>xint {
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>blockable {
-<a name="l00026"></a>00026
-<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
-<a name="l00030"></a>00030 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a>(core::integer(num1), core::integer(num2)));
-<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00033"></a>00033 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00034"></a>00034 }
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036
-<a name="l00038"></a>00038 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00039"></a>00039 <span class="keywordflow">try</span> {
-<a name="l00040"></a>00040 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a>(core::integer(num1), core::integer(num2)));
-<a name="l00041"></a>00041 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00042"></a>00042 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00043"></a>00043 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00052"></a>00052 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00053"></a>00053 <span class="keywordflow">try</span> {
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a>(core::integer(n), core::integer(m)));
-<a name="l00055"></a>00055 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00057"></a>00057 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 } <span class="comment">// namespace blockable</span>
-<a name="l00062"></a>00062 } <span class="comment">// namespace xint</span>
-<a name="l00063"></a>00063 } <span class="comment">// namespace boost</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a3ae2716e04bebbb74be08845db7132e2">gcd</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a3ae2716e04bebbb74be08845db7132e2">gcd</a>(xint::integer(num1), xint::integer(num2)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00030"></a>00030 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033
+<a name="l00035"></a>00035 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a8782636245af4772735f6e7510a7d3da">lcm</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00036"></a>00036 <span class="keywordflow">try</span> {
+<a name="l00037"></a>00037 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a8782636245af4772735f6e7510a7d3da">lcm</a>(xint::integer(num1), xint::integer(num2)));
+<a name="l00038"></a>00038 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00039"></a>00039 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00040"></a>00040 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 } <span class="comment">// namespace xint</span>
+<a name="l00045"></a>00045 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__integer_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__integer_8cpp.html (original)
+++ sandbox/xint/doc/blockable__integer_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_integer.cpp File Reference</h1>
-<p>Contains the definitions for the xint::blockable::integer member functions.
+<p>Contains the definitions for the xint::nothrow_integer member functions.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,21 +36,16 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the xint::blockable::integer member functions. </p>
+<p>Contains the definitions for the xint::nothrow_integer member functions. </p>
<p>Definition in file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__integer_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__integer_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__integer_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,212 +38,181 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="keyword">const</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>(<span class="stringliteral">"#NaN#"</span>);
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="keyword">namespace </span>blockable {
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">const</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>(<span class="stringliteral">"#NaN#"</span>);
+<a name="l00025"></a>00025
+<a name="l00027"></a>00027 <span class="comment">// The nothrow_integer class</span>
<a name="l00028"></a>00028
-<a name="l00030"></a>00030 <span class="comment">// The blockable integer class</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>{
-<a name="l00033"></a>00033 std::auto_ptr<integer> cZero, cOne, cNaN;
-<a name="l00034"></a>00034 }
-<a name="l00035"></a>00035
-<a name="l00037"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">00037</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>() {
-<a name="l00038"></a>00038 _init();
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040
-<a name="l00042"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acade75e4974489026f1eeb6945c9779a">00042</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) {
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!b.<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) _init(b);
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045
-<a name="l00056"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a0ff286ad0a69d6f885cf51905331b065">00056</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>& b) {
-<a name="l00057"></a>00057 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(b);
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00061"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2c02cafe2e7f1262a8b45356b32a21ab">00061</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
-<a name="l00062"></a>00062 <span class="keywordflow">try</span> {
-<a name="l00063"></a>00063 _init(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a>(str, base));
-<a name="l00064"></a>00064 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068
-<a name="l00073"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">00073</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">integer::odd</a>()<span class="keyword"> const </span>{
-<a name="l00074"></a>00074 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
-<a name="l00076"></a>00076 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==1);
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00085"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">00085</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">integer::even</a>()<span class="keyword"> const </span>{
-<a name="l00086"></a>00086 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
-<a name="l00088"></a>00088 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==0);
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00097"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">00097</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">integer::sign</a>()<span class="keyword"> const </span>{
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
-<a name="l00100"></a>00100 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()==1 && <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0)==0) <span class="keywordflow">return</span> 0;
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative ? -1 : 1);
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105
-<a name="l00110"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">00110</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">integer::hex_digits</a>()<span class="keyword"> const </span>{
-<a name="l00111"></a>00111 <span class="keywordflow">try</span> {
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">core::integer</a>(*this).hex_digits();
-<a name="l00113"></a>00113 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00115"></a>00115 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00125"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">00125</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">integer::is_nan</a>()<span class="keyword"> const </span>{
-<a name="l00126"></a>00126 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()==0);
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<a name="l00129"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">00129</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& addend) {
-<a name="l00130"></a>00130 <span class="keywordflow">try</span> {
-<a name="l00131"></a>00131 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator+=(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(addend)));
-<a name="l00132"></a>00132 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00134"></a>00134 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138
-<a name="l00139"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">00139</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& subtrahend) {
-<a name="l00140"></a>00140 <span class="keywordflow">try</span> {
-<a name="l00141"></a>00141 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator-=(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(subtrahend)));
-<a name="l00142"></a>00142 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00144"></a>00144 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">00149</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &c) {
-<a name="l00150"></a>00150 <span class="keywordflow">try</span> {
-<a name="l00151"></a>00151 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
-<a name="l00152"></a>00152 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00154"></a>00154 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">00159</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00160"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">00160</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00161"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">00161</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00162"></a>00162
-<a name="l00163"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">00163</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00164"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">00164</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a50d2872735d7b1dfcba66d4940cdc658">00165</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> s; }
-<a name="l00166"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a0e35cc2d6c37f4e14c4d21d998179121">00166</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>{
+<a name="l00030"></a>00030 std::auto_ptr<nothrow_integer> cZero, cOne, cNaN;
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00034"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">00034</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>() {
+<a name="l00035"></a>00035 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>();
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00039"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a9c9e622a764a004d256c18b7929081">00039</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) {
+<a name="l00040"></a>00040 <span class="keywordflow">try</span> {
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (!b.<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(b);
+<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00057"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a195e4062a0f980e1bc9df47f8645854a">00057</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b) {
+<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(b);
+<a name="l00060"></a>00060 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064
+<a name="l00066"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a70c7b596f17102c6e292b8994dda76cc">00066</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00067"></a>00067 <span class="keywordflow">try</span> {
+<a name="l00068"></a>00068 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(str, base));
+<a name="l00069"></a>00069 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00078"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">00078</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">nothrow_integer::odd</a>()<span class="keyword"> const </span>{
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00080"></a>00080 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">exception::not_a_number</a>();
+<a name="l00081"></a>00081 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(0) & 0x01)==1);
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085
+<a name="l00090"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">00090</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">nothrow_integer::even</a>()<span class="keyword"> const </span>{
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00092"></a>00092 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">exception::not_a_number</a>();
+<a name="l00093"></a>00093 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(0) & 0x01)==0);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097
+<a name="l00102"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">00102</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">nothrow_integer::sign</a>(<span class="keywordtype">bool</span> signed_zero)<span class="keyword"> const </span>{
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00104"></a>00104 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">exception::not_a_number</a>();
+<a name="l00105"></a>00105 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 <span class="keywordflow">if</span> (!signed_zero && <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>()) <span class="keywordflow">return</span> 0;
+<a name="l00108"></a>00108 <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() ? -1 : 1);
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110
+<a name="l00115"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">00115</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">nothrow_integer::hex_digits</a>()<span class="keyword"> const </span>{
+<a name="l00116"></a>00116 <span class="keywordflow">try</span> {
+<a name="l00117"></a>00117 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">xint::nothrow_integer</a>(*this).hex_digits();
+<a name="l00118"></a>00118 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00119"></a>00119 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00120"></a>00120 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123
+<a name="l00130"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d">00130</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">nothrow_integer::is_nan</a>()<span class="keyword"> const </span>{
+<a name="l00131"></a>00131 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>();
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133
+<a name="l00134"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">00134</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">nothrow_integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& addend) {
+<a name="l00135"></a>00135 <span class="keywordflow">try</span> {
+<a name="l00136"></a>00136 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator+=(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(addend)));
+<a name="l00137"></a>00137 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00139"></a>00139 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143
+<a name="l00144"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">00144</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">nothrow_integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& subtrahend) {
+<a name="l00145"></a>00145 <span class="keywordflow">try</span> {
+<a name="l00146"></a>00146 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator-=(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(subtrahend)));
+<a name="l00147"></a>00147 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00149"></a>00149 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153
+<a name="l00154"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">00154</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">nothrow_integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> &c) {
+<a name="l00155"></a>00155 <span class="keywordflow">try</span> {
+<a name="l00156"></a>00156 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(c);
+<a name="l00157"></a>00157 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00159"></a>00159 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163
+<a name="l00164"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">00164</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">nothrow_integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">00165</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">nothrow_integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00166"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">00166</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">nothrow_integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00167"></a>00167
-<a name="l00168"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">00168</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">integer::operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(*<span class="keyword">this</span>, shift); }
-<a name="l00169"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">00169</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">integer::operator>></a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(*<span class="keyword">this</span>, shift); }
-<a name="l00170"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">00170</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00171"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">00171</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00172"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">00172</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00173"></a>00173
-<a name="l00174"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">00174</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>) {
-<a name="l00175"></a>00175 <span class="keywordflow">try</span> {
-<a name="l00176"></a>00176 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator<<=(shift));
-<a name="l00177"></a>00177 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00178"></a>00178 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00179"></a>00179 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183
-<a name="l00184"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">00184</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>) {
-<a name="l00185"></a>00185 <span class="keywordflow">try</span> {
-<a name="l00186"></a>00186 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator>>=(shift));
-<a name="l00187"></a>00187 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00188"></a>00188 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00189"></a>00189 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193
-<a name="l00194"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">00194</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">integer::zero</a>() {
-<a name="l00195"></a>00195 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">core::integer::zero</a>()));
-<a name="l00196"></a>00196 <span class="keywordflow">return</span> *cZero;
+<a name="l00168"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">00168</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">nothrow_integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00169"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">00169</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">nothrow_integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00170"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#adf0e88fe1177733ae70496aa1a53a14d">00170</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">nothrow_integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00171"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#added2905dcd5b61db7fc6672831fc4eb">00171</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">nothrow_integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00172"></a>00172
+<a name="l00173"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">00173</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">nothrow_integer::operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00174"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">00174</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">nothrow_integer::operator>></a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00175"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">00175</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">nothrow_integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00176"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">00176</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">nothrow_integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00177"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">00177</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">nothrow_integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00178"></a>00178
+<a name="l00179"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">00179</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">nothrow_integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00180"></a>00180 <span class="keywordflow">try</span> {
+<a name="l00181"></a>00181 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator<<=(shift));
+<a name="l00182"></a>00182 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00183"></a>00183 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00184"></a>00184 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188
+<a name="l00189"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">00189</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">nothrow_integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00190"></a>00190 <span class="keywordflow">try</span> {
+<a name="l00191"></a>00191 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator>>=(shift));
+<a name="l00192"></a>00192 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00193"></a>00193 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00194"></a>00194 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00197"></a>00197 }
<a name="l00198"></a>00198
-<a name="l00199"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">00199</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">integer::one</a>() {
-<a name="l00200"></a>00200 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">core::integer::one</a>()));
-<a name="l00201"></a>00201 <span class="keywordflow">return</span> *cOne;
+<a name="l00199"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">00199</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">nothrow_integer::zero</a>() {
+<a name="l00200"></a>00200 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">xint::nothrow_integer::zero</a>()));
+<a name="l00201"></a>00201 <span class="keywordflow">return</span> *cZero;
<a name="l00202"></a>00202 }
<a name="l00203"></a>00203
-<a name="l00204"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">00204</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>() {
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (cNaN.get()==0) {
-<a name="l00206"></a>00206 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> *n=<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>();
-<a name="l00207"></a>00207 n-><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
-<a name="l00208"></a>00208 cNaN.reset(n);
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> *cNaN;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="keywordtype">void</span> integer::_init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init) {
-<a name="l00214"></a>00214 <span class="keywordflow">try</span> {
-<a name="l00215"></a>00215 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(init));
-<a name="l00216"></a>00216 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00217"></a>00217 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 }
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordtype">void</span> integer::_init(<span class="keyword">const</span> integer &c) {
-<a name="l00222"></a>00222 <span class="keywordflow">try</span> {
-<a name="l00223"></a>00223 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
-<a name="l00224"></a>00224 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00226"></a>00226 }
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <span class="keywordtype">void</span> integer::_init(boost::uintmax_t n) {
-<a name="l00230"></a>00230 <span class="keywordflow">try</span> {
-<a name="l00231"></a>00231 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> detail::data_t(n));
-<a name="l00232"></a>00232 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00234"></a>00234 }
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00237"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">00237</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">integer::_make_unique</a>() {
-<a name="l00238"></a>00238 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>()) {
-<a name="l00239"></a>00239 <span class="keywordflow">try</span> {
-<a name="l00240"></a>00240 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()));
-<a name="l00241"></a>00241 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00242"></a>00242 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00243"></a>00243 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0); <span class="comment">// Turns it into a Not-a-Number,</span>
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245 }
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247
-<a name="l00248"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">00248</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">integer::_set_negative</a>(<span class="keywordtype">bool</span> negative) {
-<a name="l00249"></a>00249 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative != negative) {
-<a name="l00250"></a>00250 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a>();
-<a name="l00251"></a>00251 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *p=<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00252"></a>00252 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=negative;
-<a name="l00253"></a>00253 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 } <span class="comment">// namespace blockable</span>
-<a name="l00258"></a>00258 } <span class="comment">// namespace xint</span>
-<a name="l00259"></a>00259 } <span class="comment">// namespace boost</span>
+<a name="l00204"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">00204</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">nothrow_integer::one</a>() {
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">xint::nothrow_integer::one</a>()));
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> *cOne;
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208
+<a name="l00209"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">00209</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>() {
+<a name="l00210"></a>00210 <span class="keywordflow">if</span> (cNaN.get()==0) {
+<a name="l00211"></a>00211 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> *n=<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>();
+<a name="l00212"></a>00212 n-><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0);
+<a name="l00213"></a>00213 cNaN.reset(n);
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 <span class="keywordflow">return</span> *cNaN;
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217
+<a name="l00218"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">00218</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">nothrow_integer::_make_unique</a>() {
+<a name="l00219"></a>00219 <span class="keywordflow">try</span> {
+<a name="l00220"></a>00220 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>();
+<a name="l00221"></a>00221 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00222"></a>00222 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00223"></a>00223 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0); <span class="comment">// Turns it into a Not-a-Number.</span>
+<a name="l00224"></a>00224 }
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 } <span class="comment">// namespace xint</span>
+<a name="l00228"></a>00228 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__misc_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__misc_8cpp.html (original)
+++ sandbox/xint/doc/blockable__misc_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_misc.cpp File Reference</h1>
-<p>Functions for blockable integers that don't fall into any other category.
+<p>Functions for nothrow_integers that don't fall into any other category.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,26 +36,21 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable::log2</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">boost::xint::log2</a> (const nothrow_integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Functions for blockable integers that don't fall into any other category. </p>
+<p>Functions for nothrow_integers that don't fall into any other category. </p>
<p>Definition in file <a class="el" href="blockable__misc_8cpp_source.html">blockable_misc.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__misc_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__misc_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__misc_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,22 +41,20 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00029"></a>00029 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(core::integer(n));
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 } <span class="comment">// namespace blockable</span>
-<a name="l00039"></a>00039 } <span class="comment">// namespace xint</span>
-<a name="l00040"></a>00040 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">log2</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">log2</a>(xint::integer(n));
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00033"></a>00033 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 } <span class="comment">// namespace xint</span>
+<a name="l00038"></a>00038 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__modular_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__modular_8cpp.html (original)
+++ sandbox/xint/doc/blockable__modular_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_modular.cpp File Reference</h1>
-<p>Contains the definitions for the basic modular math functions for blockable integers.
+<p>Contains the definitions for the basic modular math functions for nothrow_integers.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,30 +36,25 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable::mod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable::sqrmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">boost::xint::mod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3deaa6f8a44d454129bb06691a6035c7">boost::xint::mulmod</a> (const nothrow_integer &n, const nothrow_integer &by, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae64aa02c6217ea9f53f25d4f44ddddd1">boost::xint::sqrmod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa0d4bbcf5391accad798da207180894e">boost::xint::powmod</a> (const nothrow_integer &n, const nothrow_integer &e, const nothrow_integer &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a02c28345b397cb1508bad8d2bd36ca53">boost::xint::invmod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the basic modular math functions for blockable integers. </p>
-<p>The xint::invmod function, which logically would be here, is actually in <a class="el" href="gcd_8cpp.html" title="Greatest Common Denominator and Least Common Multple.">gcd.cpp</a> to share the gcd_core function. </p>
+<p>Contains the definitions for the basic modular math functions for nothrow_integers. </p>
<p>Definition in file <a class="el" href="blockable__modular_8cpp_source.html">blockable_modular.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__modular_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__modular_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__modular_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -37,57 +37,64 @@
<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
-<a name="l00022"></a>00022 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
<a name="l00023"></a>00023
-<a name="l00024"></a>00024 <span class="keyword">namespace </span>boost {
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>xint {
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>blockable {
-<a name="l00027"></a>00027
-<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(core::integer(n), core::integer(m)));
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00039"></a>00039 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">mulmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& m) {
-<a name="l00040"></a>00040 <span class="keywordflow">try</span> {
-<a name="l00041"></a>00041 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(core::integer(n) * core::integer(by),
-<a name="l00042"></a>00042 core::integer(m)));
-<a name="l00043"></a>00043 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00045"></a>00045 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048
-<a name="l00050"></a>00050 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00051"></a>00051 <span class="keywordflow">try</span> {
-<a name="l00052"></a>00052 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(core::integer(n)), core::integer(m)));
-<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00055"></a>00055 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00060"></a>00060 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m, <span class="keywordtype">bool</span>
-<a name="l00061"></a>00061 noMontgomery)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">try</span> {
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a>(core::integer(n), core::integer(e),
-<a name="l00065"></a>00065 core::integer(m), noMontgomery));
-<a name="l00066"></a>00066 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 } <span class="comment">// namespace blockable</span>
-<a name="l00073"></a>00073 } <span class="comment">// namespace xint</span>
-<a name="l00074"></a>00074 } <span class="comment">// namespace boost</span>
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">mod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">mod</a>(xint::integer(n), xint::integer(m)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033
+<a name="l00035"></a>00035 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a3deaa6f8a44d454129bb06691a6035c7">mulmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& by, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00036"></a>00036 <span class="keywordflow">try</span> {
+<a name="l00037"></a>00037 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">mod</a>(xint::integer(n) * xint::integer(by),
+<a name="l00038"></a>00038 xint::integer(m)));
+<a name="l00039"></a>00039 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00046"></a>00046 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ae64aa02c6217ea9f53f25d4f44ddddd1">sqrmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00047"></a>00047 <span class="keywordflow">try</span> {
+<a name="l00048"></a>00048 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">mod</a>(<a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(xint::integer(n)), xint::integer(m)));
+<a name="l00049"></a>00049 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00050"></a>00050 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054
+<a name="l00056"></a>00056 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aa0d4bbcf5391accad798da207180894e">powmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& e, <span class="keyword">const</span> nothrow_integer& m, <span class="keywordtype">bool</span>
+<a name="l00057"></a>00057 noMontgomery)
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 <span class="keywordflow">try</span> {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#aa0d4bbcf5391accad798da207180894e">powmod</a>(xint::integer(n), xint::integer(e),
+<a name="l00061"></a>00061 xint::integer(m), noMontgomery));
+<a name="l00062"></a>00062 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00063"></a>00063 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067
+<a name="l00073"></a>00073 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a02c28345b397cb1508bad8d2bd36ca53">invmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00074"></a>00074 <span class="keywordflow">try</span> {
+<a name="l00075"></a>00075 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a02c28345b397cb1508bad8d2bd36ca53">invmod</a>(xint::integer(n), xint::integer(m)));
+<a name="l00076"></a>00076 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00077"></a>00077 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00078"></a>00078 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 } <span class="comment">// namespace xint</span>
+<a name="l00083"></a>00083 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__operators_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__operators_8cpp.html (original)
+++ sandbox/xint/doc/blockable__operators_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_operators.cpp File Reference</h1>
-<p>Contains the definitions for the basic math operators for blockable integers.
+<p>Contains the definitions for the basic math operators for nothrow_integers.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,35 +36,30 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable::operator+</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable::operator-</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a43c166834c838c500713c571ff49ae7c">boost::xint::blockable::operator+</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable::operator-</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable::operator*</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable::operator/</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable::operator%</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable::operator&</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable::operator|</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const nothrow_integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">boost::xint::operator+</a> (const nothrow_integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">boost::xint::operator-</a> (const nothrow_integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a69d186688f404f1608663142da86158c">boost::xint::operator+</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad51e8e59ad1ff61dcdd462bf9d8acf08">boost::xint::operator-</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">boost::xint::operator*</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">boost::xint::operator/</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">boost::xint::operator%</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">boost::xint::operator&</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">boost::xint::operator|</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">boost::xint::operator^</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the basic math operators for blockable integers. </p>
+<p>Contains the definitions for the basic math operators for nothrow_integers. </p>
<p>Definition in file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__operators_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__operators_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__operators_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,24 +41,22 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(a); }
-<a name="l00027"></a>00027 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(num1, num2); }
-<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(num1, num2); }
-<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(num1, num2); }
-<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(num1, num2); }
-<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(num1, num2); }
-<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(n1, n2); }
-<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(n1, n2); }
-<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(n1, n2); }
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 } <span class="comment">// namespace blockable</span>
-<a name="l00037"></a>00037 } <span class="comment">// namespace xint</span>
-<a name="l00038"></a>00038 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">const</span> nothrow_integer& <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> nothrow_integer& a) { <span class="keywordflow">return</span> a; }
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> nothrow_integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(a); }
+<a name="l00026"></a>00026 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(num1, num2); }
+<a name="l00027"></a>00027 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(num1, num2); }
+<a name="l00028"></a>00028 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">operator*</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(num1, num2); }
+<a name="l00029"></a>00029 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">operator/</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(num1, num2); }
+<a name="l00030"></a>00030 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">operator%</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">mod</a>(num1, num2); }
+<a name="l00031"></a>00031 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">operator&</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(n1, n2); }
+<a name="l00032"></a>00032 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">operator|</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(n1, n2); }
+<a name="l00033"></a>00033 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">operator^</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(n1, n2); }
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 } <span class="comment">// namespace xint</span>
+<a name="l00036"></a>00036 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__powers_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__powers_8cpp.html (original)
+++ sandbox/xint/doc/blockable__powers_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_powers.cpp File Reference</h1>
-<p>Contains the definitions for blockable integer functions related to powers of a number.
+<p>Contains the definitions for nothrow_integer functions related to powers of a number.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,29 +36,24 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable::pow2</a> (size_t e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable::sqr</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable::pow</a> (const integer &n, const integer &e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable::factorial</a> (size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">boost::xint::nothrow_pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">boost::xint::sqr</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">boost::xint::pow</a> (const nothrow_integer &n, const nothrow_integer &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">boost::xint::nothrow_factorial</a> (size_t n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for blockable integer functions related to powers of a number. </p>
+<p>Contains the definitions for nothrow_integer functions related to powers of a number. </p>
<p>Definition in file <a class="el" href="blockable__powers_8cpp_source.html">blockable_powers.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__powers_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__powers_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__powers_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,46 +41,44 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">pow2</a>(<span class="keywordtype">size_t</span> e) {
-<a name="l00027"></a>00027 integer r;
-<a name="l00028"></a>00028 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(r, e);
-<a name="l00029"></a>00029 <span class="keywordflow">return</span> r;
-<a name="l00030"></a>00030 }
-<a name="l00031"></a>00031
-<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00034"></a>00034 <span class="keywordflow">try</span> {
-<a name="l00035"></a>00035 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(core::integer(n)));
-<a name="l00036"></a>00036 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00037"></a>00037 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00038"></a>00038 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00043"></a>00043 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
-<a name="l00044"></a>00044 <span class="keywordflow">try</span> {
-<a name="l00045"></a>00045 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a>(core::integer(n), core::integer(e)));
-<a name="l00046"></a>00046 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00048"></a>00048 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00053"></a>00053 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">factorial</a>(<span class="keywordtype">size_t</span> n) {
-<a name="l00054"></a>00054 <span class="keywordflow">try</span> {
-<a name="l00055"></a>00055 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a" title="Calculate the value of n! ">core::factorial</a>(n));
-<a name="l00056"></a>00056 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00057"></a>00057 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00058"></a>00058 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 } <span class="comment">// namespace blockable</span>
-<a name="l00063"></a>00063 } <span class="comment">// namespace xint</span>
-<a name="l00064"></a>00064 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">nothrow_pow2</a>(<span class="keywordtype">size_t</span> e) {
+<a name="l00026"></a>00026 nothrow_integer r;
+<a name="l00027"></a>00027 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(r, e);
+<a name="l00028"></a>00028 <span class="keywordflow">return</span> r;
+<a name="l00029"></a>00029 }
+<a name="l00030"></a>00030
+<a name="l00032"></a>00032 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00033"></a>00033 <span class="keywordflow">try</span> {
+<a name="l00034"></a>00034 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(xint::integer(n)));
+<a name="l00035"></a>00035 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00036"></a>00036 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00037"></a>00037 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00038"></a>00038 }
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040
+<a name="l00042"></a>00042 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& e) {
+<a name="l00043"></a>00043 <span class="keywordflow">try</span> {
+<a name="l00044"></a>00044 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a>(xint::integer(n), xint::integer(e)));
+<a name="l00045"></a>00045 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00047"></a>00047 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050
+<a name="l00052"></a>00052 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">nothrow_factorial</a>(<span class="keywordtype">size_t</span> n) {
+<a name="l00053"></a>00053 <span class="keywordflow">try</span> {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">xint::factorial</a>(n));
+<a name="l00055"></a>00055 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00056"></a>00056 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00057"></a>00057 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 } <span class="comment">// namespace xint</span>
+<a name="l00062"></a>00062 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__primes_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__primes_8cpp.html (original)
+++ sandbox/xint/doc/blockable__primes_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_primes.cpp File Reference</h1>
-<p>Contains the definitions for functions related to prime numbers for blockable integers.
+<p>Contains the definitions for functions related to prime numbers for <code>nothrow_integers</code>.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,27 +36,22 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable::is_prime</a> (const integer &n, callback_t callback)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">boost::xint::is_prime</a> (const nothrow_integer &n, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">boost::xint::nothrow_random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for functions related to prime numbers for blockable integers. </p>
+<p>Contains the definitions for functions related to prime numbers for <code>nothrow_integers</code>. </p>
<p>Definition in file <a class="el" href="blockable__primes_8cpp_source.html">blockable_primes.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__primes_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__primes_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__primes_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,31 +41,29 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00029"></a>00029 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
-<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a>(core::integer(n), callback);
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> -1;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00039"></a>00039 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
-<a name="l00040"></a>00040 <span class="keywordflow">try</span> {
-<a name="l00041"></a>00041 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e" title="Generate a randomly-generated prime number of a particular bit-size.">core::random_prime</a>(size_in_bits, callback));
-<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00044"></a>00044 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 } <span class="comment">// namespace blockable</span>
-<a name="l00049"></a>00049 } <span class="comment">// namespace xint</span>
-<a name="l00050"></a>00050 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(<span class="keyword">const</span> nothrow_integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(xint::integer(n), callback);
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00033"></a>00033 <span class="keywordflow">else</span> <span class="keywordflow">return</span> -1;
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036
+<a name="l00038"></a>00038 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">nothrow_random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00039"></a>00039 <span class="keywordflow">try</span> {
+<a name="l00040"></a>00040 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">xint::random_prime</a>(size_in_bits, callback));
+<a name="l00041"></a>00041 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00043"></a>00043 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 } <span class="comment">// namespace xint</span>
+<a name="l00048"></a>00048 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__primitives_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__primitives_8cpp.html (original)
+++ sandbox/xint/doc/blockable__primitives_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_primitives.cpp File Reference</h1>
-<p>Contains the definitions for math primitives for blockable integers.
+<p>Contains the definitions for math primitives for <code>nothrow_integers</code>.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,32 +36,28 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable::abs</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable::negate</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable::add</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable::subtract</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable::multiply</a> (const integer &n, const integer &by)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">boost::xint::abs</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">boost::xint::negate</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">boost::xint::add</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">boost::xint::subtract</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">boost::xint::multiply</a> (const nothrow_integer &n, const nothrow_integer &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">boost::xint::divide</a> (const nothrow_integer &dividend, const nothrow_integer &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< nothrow_integer, <br class="typebreak"/>
+nothrow_integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">boost::xint::divide_r</a> (const nothrow_integer &d1, const nothrow_integer &d2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for math primitives for blockable integers. </p>
+<p>Contains the definitions for math primitives for <code>nothrow_integers</code>. </p>
<p>Definition in file <a class="el" href="blockable__primitives_8cpp_source.html">blockable_primitives.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__primitives_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__primitives_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__primitives_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,71 +41,69 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>blockable {
-<a name="l00023"></a>00023
-<a name="l00025"></a>00025 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
-<a name="l00027"></a>00027 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a>(core::integer(n)));
-<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00029"></a>00029 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00031"></a>00031 }
-<a name="l00032"></a>00032 }
-<a name="l00033"></a>00033
-<a name="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00036"></a>00036 <span class="keywordflow">try</span> {
-<a name="l00037"></a>00037 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(core::integer(n)));
-<a name="l00038"></a>00038 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00040"></a>00040 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00045"></a>00045 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
-<a name="l00046"></a>00046 <span class="keywordflow">try</span> {
-<a name="l00047"></a>00047 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(core::integer(n1), core::integer(n2)));
-<a name="l00048"></a>00048 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00049"></a>00049 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00055"></a>00055 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
-<a name="l00056"></a>00056 <span class="keywordflow">try</span> {
-<a name="l00057"></a>00057 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(core::integer(n1), core::integer(n2)));
-<a name="l00058"></a>00058 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00060"></a>00060 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00065"></a>00065 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
-<a name="l00066"></a>00066 <span class="keywordflow">try</span> {
-<a name="l00067"></a>00067 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(core::integer(n), core::integer(by)));
-<a name="l00068"></a>00068 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00075"></a>00075 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(dividend, divisor).first;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00084"></a>00084 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span> integer& d2) {
-<a name="l00085"></a>00085 <span class="keywordflow">try</span> {
-<a name="l00086"></a>00086 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(core::integer(d1), core::integer(d2));
-<a name="l00087"></a>00087 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>(), <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>());
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 } <span class="comment">// namespace blockable</span>
-<a name="l00094"></a>00094 } <span class="comment">// namespace xint</span>
-<a name="l00095"></a>00095 } <span class="comment">// namespace boost</span>
+<a name="l00022"></a>00022
+<a name="l00024"></a>00024 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00025"></a>00025 <span class="keywordflow">try</span> {
+<a name="l00026"></a>00026 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(xint::integer(n)));
+<a name="l00027"></a>00027 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00028"></a>00028 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00034"></a>00034 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(xint::integer(n)));
+<a name="l00037"></a>00037 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00038"></a>00038 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00039"></a>00039 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042
+<a name="l00044"></a>00044 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00045"></a>00045 <span class="keywordflow">try</span> {
+<a name="l00046"></a>00046 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00047"></a>00047 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052
+<a name="l00054"></a>00054 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00055"></a>00055 <span class="keywordflow">try</span> {
+<a name="l00056"></a>00056 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00057"></a>00057 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00059"></a>00059 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00064"></a>00064 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& by) {
+<a name="l00065"></a>00065 <span class="keywordflow">try</span> {
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(xint::integer(n), xint::integer(by)));
+<a name="l00067"></a>00067 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072
+<a name="l00074"></a>00074 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(<span class="keyword">const</span> nothrow_integer& dividend, <span class="keyword">const</span> nothrow_integer& divisor) {
+<a name="l00075"></a>00075 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(dividend, divisor).first;
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077
+<a name="l00083"></a>00083 std::pair<nothrow_integer, nothrow_integer> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(<span class="keyword">const</span> nothrow_integer& d1, <span class="keyword">const</span> nothrow_integer& d2) {
+<a name="l00084"></a>00084 <span class="keywordflow">try</span> {
+<a name="l00085"></a>00085 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(xint::integer(d1), xint::integer(d2));
+<a name="l00086"></a>00086 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>(), <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>());
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 } <span class="comment">// namespace xint</span>
+<a name="l00093"></a>00093 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__random_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__random_8cpp.html (original)
+++ sandbox/xint/doc/blockable__random_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_random.cpp File Reference</h1>
-<p>Contains the definitions for the random number functions for blockable integers.
+<p>Contains the definitions for the random number functions for nothrow_integers.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,26 +36,21 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">boost::xint::nothrow_random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the random number functions for blockable integers. </p>
+<p>Contains the definitions for the random number functions for nothrow_integers. </p>
<p>Definition in file <a class="el" href="blockable__random_8cpp_source.html">blockable_random.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__random_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__random_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__random_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,25 +41,23 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
-<a name="l00027"></a>00027 can_be_negative)
-<a name="l00028"></a>00028 {
-<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
-<a name="l00030"></a>00030 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">core::random_by_size</a>(bits, high_bit_on, low_bit_on,
-<a name="l00031"></a>00031 can_be_negative));
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 } <span class="comment">// namespace blockable</span>
-<a name="l00039"></a>00039 } <span class="comment">// namespace xint</span>
-<a name="l00040"></a>00040 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">nothrow_random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span>
+<a name="l00026"></a>00026 low_bit_on, <span class="keywordtype">bool</span> can_be_negative)
+<a name="l00027"></a>00027 {
+<a name="l00028"></a>00028 <span class="keywordflow">try</span> {
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">xint::random_by_size</a>(bits, high_bit_on,
+<a name="l00030"></a>00030 low_bit_on, can_be_negative));
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00033"></a>00033 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 } <span class="comment">// namespace xint</span>
+<a name="l00038"></a>00038 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__roots_8cpp.html
==============================================================================
--- sandbox/xint/doc/blockable__roots_8cpp.html (original)
+++ sandbox/xint/doc/blockable__roots_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>blockable_roots.cpp File Reference</h1>
-<p>Contains the definitions for blockable integer functions related to roots of a number.
+<p>Contains the definitions for nothrow_integer functions related to roots of a number.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,26 +36,21 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable::sqrt</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">boost::xint::sqrt</a> (const nothrow_integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for blockable integer functions related to roots of a number. </p>
+<p>Contains the definitions for nothrow_integer functions related to roots of a number. </p>
<p>Definition in file <a class="el" href="blockable__roots_8cpp_source.html">blockable_roots.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/blockable__roots_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/blockable__roots_8cpp_source.html (original)
+++ sandbox/xint/doc/blockable__roots_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,22 +41,20 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00027"></a>00027 <span class="keywordflow">try</span> {
-<a name="l00028"></a>00028 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(core::integer(n)));
-<a name="l00029"></a>00029 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00030"></a>00030 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00032"></a>00032 }
-<a name="l00033"></a>00033 }
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 } <span class="comment">// namespace blockable</span>
-<a name="l00036"></a>00036 } <span class="comment">// namespace xint</span>
-<a name="l00037"></a>00037 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a>(xint::integer(n)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 } <span class="comment">// namespace xint</span>
+<a name="l00035"></a>00035 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:53:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,16 +28,31 @@
</div>
<div class="contents">
<h1>boost::xint::blockable::integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(detail::data_t *new_data)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#acb7343f98a534a07da2dc86d6e8bee0a">_attach</a>(detail::data_t *new_data, bool neg=false)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee6c6d706a8dc8cdd1a16b1e65a47e2">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(digit_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">_duplicate</a>(const base_integer &copy, size_t extra)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a359e782a4a4c3e386957bc9cc03f8bea">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0c199a74bd0fee53de75f6ea80b4056c">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afd35edbad147f88c369bc4d0bda0b9ca">_get_digits</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a38654bb63b923be7f992e7812812b608">_get_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">_set_negative</a>(bool negative)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a>(size_t new_digit_count)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(bool neg)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
@@ -67,11 +82,11 @@
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">operator>>=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">operator^=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">operator|=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">sign</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa5be24d1eeb5b0b58f966e174cda1928">sign</a>(bool signed_zero=false) const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">zero</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:19 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::blockable::integer Class Reference</h1><!-- doxytag: class="boost::xint::blockable::integer" --><!-- doxytag: inherits="boost::xint::core::base_integer" -->
+<h1>boost::xint::blockable::integer Class Reference</h1><!-- doxytag: class="boost::xint::blockable::integer" --><!-- doxytag: inherits="boost::xint::detail::base_integer" -->
<p>The blockable integer class.
<a href="#_details">More...</a></p>
<div class="dynheader">
@@ -38,7 +38,7 @@
<div class="center">
<img src="classboost_1_1xint_1_1blockable_1_1integer.png" usemap="#boost::xint::blockable::integer_map" alt=""/>
<map id="boost::xint::blockable::integer_map" name="boost::xint::blockable::integer_map">
-<area href="classboost_1_1xint_1_1core_1_1base__integer.html" alt="boost::xint::core::base_integer" shape="rect" coords="0,0,178,24"/>
+<area href="classboost_1_1xint_1_1detail_1_1base__integer.html" alt="boost::xint::detail::base_integer" shape="rect" coords="0,0,182,24"/>
</map>
</div>
</div>
@@ -84,14 +84,13 @@
</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">odd</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">even</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">sign</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa5be24d1eeb5b0b58f966e174cda1928">sign</a> (bool signed_zero=false) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">is_nan</a> () const </td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests <code>*this</code> for Not-a-Number. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">hex_digits</a> () const </td></tr>
<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a>These functions allow access to the internals of the integer. They are intended for internal use only. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">_set_negative</a> (bool negative)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a> ()</td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
@@ -107,7 +106,7 @@
<p>There are only a few member functions; most of the functionality is implemented using standalone functions.</p>
<p>Functions that start with an underscore (such as <code>_make_unique</code>) are intended for internal use only. They may change arbitrarily in future versions. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00387">387</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00400">400</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
<hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a9f1ddc3bb2f495ebad9dc666c51ed046"></a><!-- doxytag: member="boost::xint::blockable::integer::integer" ref="a9f1ddc3bb2f495ebad9dc666c51ed046" args="()" -->
<div class="memitem">
@@ -183,7 +182,7 @@
<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00056">56</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00060">60</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -220,16 +219,16 @@
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">exception::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html">exception::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
</table>
</dd>
</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This will convert a string representation of a number into an integer. See the description of the xint::from_string function for details on its behavior.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This will convert a string representation of a number into an integer. See the description of the <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">from_string</a> function for details on its behavior.</dd></dl>
<dl class="user"><dt><b></b></dt><dd>This is the most common way to initialize values that are too large to fit into a native integral type.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00061">61</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00069">69</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -281,7 +280,7 @@
<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00969">969</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00973">973</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -333,7 +332,7 @@
<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00993">993</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00997">997</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -353,27 +352,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00237">237</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7ebbf3b74b5c3307f550efa29180b7f6"></a><!-- doxytag: member="boost::xint::blockable::integer::_set_negative" ref="a7ebbf3b74b5c3307f550efa29180b7f6" args="(bool negative)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::blockable::integer::_set_negative </td>
- <td>(</td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>negative</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00248">248</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00221">221</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -395,7 +374,7 @@
</p>
<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00085">85</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00093">93</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -417,7 +396,7 @@
</p>
<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00110">110</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00118">118</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -440,7 +419,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is Not-a-Number, otherwise <code>false</code>.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nan.html">The Not-a-Number Value</a> </dd></dl>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00125">125</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00133">133</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -459,7 +438,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00204">204</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00212">212</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -481,7 +460,7 @@
</p>
<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00073">73</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00081">81</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -500,7 +479,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00199">199</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00207">207</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -520,7 +499,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00161">161</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00169">169</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -540,7 +519,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00170">170</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00178">178</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -560,7 +539,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00159">159</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00167">167</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -581,7 +560,7 @@
<div class="memdoc">
<p>Postincrement operator -- not recommended, inefficient </p>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00165">165</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00173">173</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -601,7 +580,7 @@
<div class="memdoc">
<p>Preincrement operator </p>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00163">163</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00171">171</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -621,7 +600,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00129">129</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00137">137</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -642,7 +621,7 @@
<div class="memdoc">
<p>Postdecrement operator -- not recommended, inefficient </p>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00166">166</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00174">174</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -662,7 +641,7 @@
<div class="memdoc">
<p>Predecrement operator </p>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00164">164</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00172">172</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -682,7 +661,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00139">139</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00147">147</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -702,7 +681,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00160">160</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -722,7 +701,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00176">176</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -742,7 +721,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00174">174</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00182">182</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -762,7 +741,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00149">149</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00157">157</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -782,7 +761,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00169">169</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00177">177</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -802,7 +781,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00184">184</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00192">192</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -822,7 +801,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00172">172</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00180">180</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -842,29 +821,36 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00171">171</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00179">179</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="addba2da8dc24e5e137dc759b5ec3c211"></a><!-- doxytag: member="boost::xint::blockable::integer::sign" ref="addba2da8dc24e5e137dc759b5ec3c211" args="() const " -->
+<a class="anchor" id="aa5be24d1eeb5b0b58f966e174cda1928"></a><!-- doxytag: member="boost::xint::blockable::integer::sign" ref="aa5be24d1eeb5b0b58f966e174cda1928" args="(bool signed_zero=false) const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int boost::xint::blockable::integer::sign </td>
<td>(</td>
- <td class="paramname"></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>signed_zero</em> = <code>false</code></td>
<td> ) </td>
<td> const</td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Tests the sign of <code>*this</code>. <dl class="return"><dt><b>Returns:</b></dt><dd>-1 if <code>*this</code> is negative, 0 if it's zero, or 1 if it's greater than zero. </dd></dl>
+<p>Tests the sign of <code>*this</code>. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>signed_zero</em> </td><td>If <code>false</code> (the default value), returns zero if <code>*this</code> is zero. If <code>true</code>, returns 1 or -1 on a zero <code>*this</code> as well. Primarily used to identify a <a class="el" href="zero.html">negative zero</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if <code>*this</code> is negative, 0 if it's zero, or 1 if it's greater than zero. </dd></dl>
</p>
<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00097">97</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00105">105</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -883,7 +869,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00194">194</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00202">202</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
</div>
@@ -892,7 +878,7 @@
<li><a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:19 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.png
==============================================================================
Binary files. No diff available.
Modified: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,17 +28,30 @@
</div>
<div class="contents">
<h1>boost::xint::core::base_integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(detail::data_t *new_data)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa39add70fb520dfe351ca25ac4a50279">_add</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a30d2be94a5d9bb9bb3d6171de546c05e">_attach</a>(detail::data_t *new_data, bool neg=false)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a8b9bce898acddcf8e3ec6b8625d57a0f">_base_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a1a784d80cc34a4d4d3191f780b3cfff1">_cleanup</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9151e31e4dbb0ca8b0ded670d7d71a5b">_copy</a>(const base_integer &copy, size_t extra)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ad16080c4ce4693ed49c051408a225f44">_get_digits</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4a22086e857b186bbbe8a6e7b752ffa0">_get_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a2fd6385e9d6953acbc0763720aafaac4">_get_negative</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4fc848087aa061549e9388495f14d4d4">_is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4a68ca6093ef45331d4f13c03a4af555">_is_zero</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a074070a5f6ccd250493acb53adc2e5d3">_realloc</a>(size_t new_digit_count)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa54c0899c6219b8fbc027b1e3b4d58c6">_set_negative</a>(bool neg)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a2d3cc0c651416f681b0d9474e75e62ca">_shift_left</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ae357701f90c4930ffa9035a4a9f1733b">_shift_right</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac1dfaadf6302901f765b449cb8f1805a">_subtract</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue Apr 13 00:48:56 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -52,13 +52,26 @@
<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a> (size_t index) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a> (size_t index, bool) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ad16080c4ce4693ed49c051408a225f44">_get_digits</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4a22086e857b186bbbe8a6e7b752ffa0">_get_digits</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4a68ca6093ef45331d4f13c03a4af555">_is_zero</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a2fd6385e9d6953acbc0763720aafaac4">_get_negative</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa54c0899c6219b8fbc027b1e3b4d58c6">_set_negative</a> (bool neg)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a1a784d80cc34a4d4d3191f780b3cfff1">_cleanup</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a074070a5f6ccd250493acb53adc2e5d3">_realloc</a> (size_t new_digit_count)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9151e31e4dbb0ca8b0ded670d7d71a5b">_copy</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> &copy, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a2d3cc0c651416f681b0d9474e75e62ca">_shift_left</a> (size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ae357701f90c4930ffa9035a4a9f1733b">_shift_right</a> (size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa39add70fb520dfe351ca25ac4a50279">_add</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac1dfaadf6302901f765b449cb8f1805a">_subtract</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> &n)</td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *new_data)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4fc848087aa061549e9388495f14d4d4">_is_nan</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a8b9bce898acddcf8e3ec6b8625d57a0f">_base_make_unique</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a30d2be94a5d9bb9bb3d6171de546c05e">_attach</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *new_data, bool neg=false)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> &copy)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
@@ -105,6 +118,26 @@
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aa39add70fb520dfe351ca25ac4a50279"></a><!-- doxytag: member="boost::xint::core::base_integer::_add" ref="aa39add70fb520dfe351ca25ac4a50279" args="(const base_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_add </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00125">125</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a80fd494f4fe59cb29f1f305b1f092e45"></a><!-- doxytag: member="boost::xint::core::base_integer::_attach" ref="a80fd494f4fe59cb29f1f305b1f092e45" args="(const base_integer &copy)" -->
<div class="memitem">
<div class="memproto">
@@ -121,11 +154,11 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00070">70</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00085">85</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a662d8cca23ec10683e5a4884e9ade5d4"></a><!-- doxytag: member="boost::xint::core::base_integer::_attach" ref="a662d8cca23ec10683e5a4884e9ade5d4" args="(detail::data_t *new_data)" -->
+<a class="anchor" id="a30d2be94a5d9bb9bb3d6171de546c05e"></a><!-- doxytag: member="boost::xint::core::base_integer::_attach" ref="a30d2be94a5d9bb9bb3d6171de546c05e" args="(detail::data_t *new_data, bool neg=false)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -133,7 +166,35 @@
<td class="memname">void boost::xint::core::base_integer::_attach </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> * </td>
- <td class="paramname"> <em>new_data</em></td>
+ <td class="paramname"> <em>new_data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>neg</em> = <code>false</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00066">66</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b9bce898acddcf8e3ec6b8625d57a0f"></a><!-- doxytag: member="boost::xint::core::base_integer::_base_make_unique" ref="a8b9bce898acddcf8e3ec6b8625d57a0f" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_base_make_unique </td>
+ <td>(</td>
+ <td class="paramname"></td>
<td> ) </td>
<td><code> [protected]</code></td>
</tr>
@@ -141,26 +202,55 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00053">53</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00121">121</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a28bd6c6ce95b271d6f75d82041515df2"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_data" ref="a28bd6c6ce95b271d6f75d82041515df2" args="() const " -->
+<a class="anchor" id="a1a784d80cc34a4d4d3191f780b3cfff1"></a><!-- doxytag: member="boost::xint::core::base_integer::_cleanup" ref="a1a784d80cc34a4d4d3191f780b3cfff1" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a>* boost::xint::core::base_integer::_get_data </td>
+ <td class="memname">void boost::xint::core::base_integer::_cleanup </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
- <td> const<code> [inline]</code></td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00105">105</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9151e31e4dbb0ca8b0ded670d7d71a5b"></a><!-- doxytag: member="boost::xint::core::base_integer::_copy" ref="a9151e31e4dbb0ca8b0ded670d7d71a5b" args="(const base_integer &copy, size_t extra)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_copy </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>copy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>extra</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00146">146</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00061">61</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -214,6 +304,45 @@
</div>
</div>
+<a class="anchor" id="a4a22086e857b186bbbe8a6e7b752ffa0"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_digits" ref="a4a22086e857b186bbbe8a6e7b752ffa0" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> * boost::xint::core::base_integer::_get_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00053">53</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad16080c4ce4693ed49c051408a225f44"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_digits" ref="ad16080c4ce4693ed49c051408a225f44" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> * boost::xint::core::base_integer::_get_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00049">49</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a9ed6fed4d931d2eb9b481ca02cc96bd7"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_length" ref="a9ed6fed4d931d2eb9b481ca02cc96bd7" args="() const " -->
<div class="memitem">
<div class="memproto">
@@ -229,7 +358,45 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00049">49</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00057">57</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2fd6385e9d6953acbc0763720aafaac4"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_negative" ref="a2fd6385e9d6953acbc0763720aafaac4" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::base_integer::_get_negative </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00097">97</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4fc848087aa061549e9388495f14d4d4"></a><!-- doxytag: member="boost::xint::core::base_integer::_is_nan" ref="a4fc848087aa061549e9388495f14d4d4" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::base_integer::_is_nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const<code> [inline, protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00165">165</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -248,7 +415,126 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00074">74</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00089">89</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4a68ca6093ef45331d4f13c03a4af555"></a><!-- doxytag: member="boost::xint::core::base_integer::_is_zero" ref="a4a68ca6093ef45331d4f13c03a4af555" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::base_integer::_is_zero </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00093">93</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a074070a5f6ccd250493acb53adc2e5d3"></a><!-- doxytag: member="boost::xint::core::base_integer::_realloc" ref="a074070a5f6ccd250493acb53adc2e5d3" args="(size_t new_digit_count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_realloc </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>new_digit_count</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00109">109</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa54c0899c6219b8fbc027b1e3b4d58c6"></a><!-- doxytag: member="boost::xint::core::base_integer::_set_negative" ref="aa54c0899c6219b8fbc027b1e3b4d58c6" args="(bool neg)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_set_negative </td>
+ <td>(</td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>neg</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00101">101</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2d3cc0c651416f681b0d9474e75e62ca"></a><!-- doxytag: member="boost::xint::core::base_integer::_shift_left" ref="a2d3cc0c651416f681b0d9474e75e62ca" args="(size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_shift_left </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00113">113</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae357701f90c4930ffa9035a4a9f1733b"></a><!-- doxytag: member="boost::xint::core::base_integer::_shift_right" ref="ae357701f90c4930ffa9035a4a9f1733b" args="(size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_shift_right </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00117">117</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac1dfaadf6302901f765b449cb8f1805a"></a><!-- doxytag: member="boost::xint::core::base_integer::_subtract" ref="ac1dfaadf6302901f765b449cb8f1805a" args="(const base_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_subtract </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00129">129</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -257,7 +543,7 @@
<li><a class="el" href="integer_8cpp_source.html">integer.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue Apr 13 00:48:56 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,19 +28,31 @@
</div>
<div class="contents">
<h1>boost::xint::core::integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(detail::data_t *new_data)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(detail::digit_t init=0)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a>(const integer &c)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#acb7343f98a534a07da2dc86d6e8bee0a">_attach</a>(detail::data_t *new_data, bool neg=false)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee6c6d706a8dc8cdd1a16b1e65a47e2">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(digit_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">_duplicate</a>(const base_integer &copy, size_t extra)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a359e782a4a4c3e386957bc9cc03f8bea">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0c199a74bd0fee53de75f6ea80b4056c">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afd35edbad147f88c369bc4d0bda0b9ca">_get_digits</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a38654bb63b923be7f992e7812812b608">_get_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(bool negative)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a>(size_t new_digit_count)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(bool neg)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
@@ -68,11 +80,11 @@
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator>>=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4d0691f762a659cfebdfadca63d0a7d6">sign</a>(bool signed_zero=false) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:19 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::core::integer Class Reference</h1><!-- doxytag: class="boost::xint::core::integer" --><!-- doxytag: inherits="boost::xint::core::base_integer" -->
+<h1>boost::xint::core::integer Class Reference</h1><!-- doxytag: class="boost::xint::core::integer" --><!-- doxytag: inherits="boost::xint::detail::base_integer" -->
<p>The core integer class.
<a href="#_details">More...</a></p>
<div class="dynheader">
@@ -38,7 +38,7 @@
<div class="center">
<img src="classboost_1_1xint_1_1core_1_1integer.png" usemap="#boost::xint::core::integer_map" alt=""/>
<map id="boost::xint::core::integer_map" name="boost::xint::core::integer_map">
-<area href="classboost_1_1xint_1_1core_1_1base__integer.html" alt="boost::xint::core::base_integer" shape="rect" coords="0,0,178,24"/>
+<area href="classboost_1_1xint_1_1detail_1_1base__integer.html" alt="boost::xint::detail::base_integer" shape="rect" coords="0,0,182,24"/>
</map>
</div>
</div>
@@ -89,14 +89,13 @@
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine oddness. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">even</a> () const </td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine evenness. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the sign of <code>*this</code>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4d0691f762a659cfebdfadca63d0a7d6">sign</a> (bool signed_zero=false) const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the sign of <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">hex_digits</a> () const </td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells you roughly how large an integer is. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a>These functions allow access to the internals of the integer. They are intended for internal use only. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a> (bool negative)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a> ()</td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
@@ -104,10 +103,6 @@
</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a> ()</td></tr>
-<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a> (boost::uintmax_t n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The core integer class. </p>
@@ -115,7 +110,7 @@
<p>There are only a few member functions; most of the functionality is implemented using standalone functions.</p>
<p>Functions that start with an underscore (such as <code>_make_unique</code>) are intended for internal use only. They may change arbitrarily in future versions. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00173">173</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00192">192</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
<hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a4e99025a3cdbf0777f90effe05e97625"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="a4e99025a3cdbf0777f90effe05e97625" args="()" -->
<div class="memitem">
@@ -134,7 +129,7 @@
<p>Creates a new integer with an initial value of zero. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00082">82</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00030">30</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -164,7 +159,7 @@
<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00097">97</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00045">45</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -194,7 +189,7 @@
<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00111">111</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00059">59</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -233,16 +228,16 @@
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">exception::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html">exception::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
</table>
</dd>
</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This will convert a string representation of a number into an integer. See the description of the xint::from_string function for details on its behavior.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This will convert a string representation of a number into an integer. See the description of the <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">from_string</a> function for details on its behavior.</dd></dl>
<dl class="user"><dt><b></b></dt><dd>This is the most common way to initialize values that are too large to fit into a native integral type.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00136">136</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00085">85</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -294,7 +289,7 @@
<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00798">798</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00801">801</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -346,73 +341,11 @@
<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00830">830</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00833">833</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a275c6dc7e675e5395ab16d92c9851429"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="a275c6dc7e675e5395ab16d92c9851429" args="(boost::uintmax_t n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::core::integer::_init </td>
- <td>(</td>
- <td class="paramtype">boost::uintmax_t </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00152">152</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab02f3ddc3b8bd2f892f8a072427076b4"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="ab02f3ddc3b8bd2f892f8a072427076b4" args="(const integer &c)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::core::integer::_init </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
- <td class="paramname"> <em>c</em></td>
- <td> ) </td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00148">148</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0a8f95e339c5c30a23313a4af6a40b51"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="a0a8f95e339c5c30a23313a4af6a40b51" args="(detail::digit_t init=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::core::integer::_init </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td>
- <td class="paramname"> <em>init</em> = <code>0</code></td>
- <td> ) </td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00140">140</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
<a class="anchor" id="a1f1b1c19c7c3ec22972124abdbd08cc1"></a><!-- doxytag: member="boost::xint::core::integer::_make_unique" ref="a1f1b1c19c7c3ec22972124abdbd08cc1" args="()" -->
<div class="memitem">
<div class="memproto">
@@ -428,27 +361,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00160">160</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a66b8657cfa608ce2fd95bfad869e09b3"></a><!-- doxytag: member="boost::xint::core::integer::_set_negative" ref="a66b8657cfa608ce2fd95bfad869e09b3" args="(bool negative)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::core::integer::_set_negative </td>
- <td>(</td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>negative</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00089">89</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -470,7 +383,7 @@
<p>Tests the lowest bit of <code>*this</code> to determine evenness. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00189">189</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00105">105</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -492,7 +405,7 @@
<p>Tells you roughly how large an integer is. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The number of hexadecimal digits that would be required to encode <code>this</code>. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00208">208</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00128">128</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -514,7 +427,7 @@
<p>Tests the lowest bit of <code>*this</code> to determine oddness. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00181">181</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00097">97</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -533,7 +446,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00280">280</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00200">200</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -553,7 +466,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00246">246</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00166">166</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -573,7 +486,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00255">255</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00175">175</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -593,7 +506,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00244">244</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00164">164</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -614,7 +527,7 @@
<div class="memdoc">
<p>Postincrement operator -- not recommended, inefficient </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00250">250</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00170">170</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -634,7 +547,7 @@
<div class="memdoc">
<p>Preincrement operator </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00248">248</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -654,7 +567,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00213">213</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00133">133</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -675,7 +588,7 @@
<div class="memdoc">
<p>Postdecrement operator -- not recommended, inefficient </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00251">251</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00171">171</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -695,7 +608,7 @@
<div class="memdoc">
<p>Predecrement operator </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00249">249</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00169">169</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -715,7 +628,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00227">227</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00147">147</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -735,7 +648,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00245">245</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00165">165</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -755,7 +668,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00253">253</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00173">173</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -775,7 +688,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00259">259</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00179">179</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -795,7 +708,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00239">239</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00159">159</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -815,7 +728,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00254">254</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00174">174</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -835,7 +748,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00267">267</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00187">187</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -855,7 +768,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00257">257</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00177">177</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -875,18 +788,19 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00256">256</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00176">176</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="abbb37de330e3a50ac3df337e5c0eb1c9"></a><!-- doxytag: member="boost::xint::core::integer::sign" ref="abbb37de330e3a50ac3df337e5c0eb1c9" args="() const " -->
+<a class="anchor" id="a4d0691f762a659cfebdfadca63d0a7d6"></a><!-- doxytag: member="boost::xint::core::integer::sign" ref="a4d0691f762a659cfebdfadca63d0a7d6" args="(bool signed_zero=false) const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int boost::xint::core::integer::sign </td>
<td>(</td>
- <td class="paramname"></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>signed_zero</em> = <code>false</code></td>
<td> ) </td>
<td> const</td>
</tr>
@@ -895,9 +809,15 @@
<div class="memdoc">
<p>Tests the sign of <code>*this</code>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>signed_zero</em> </td><td>If <code>false</code> (the default value), returns zero if <code>*this</code> is zero. If <code>true</code>, returns 1 or -1 on a zero <code>*this</code> as well. Primarily used to identify a <a class="el" href="zero.html">negative zero</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if <code>*this</code> is negative, 0 if it's zero, or 1 if it's greater than zero. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00198">198</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00118">118</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -916,7 +836,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00275">275</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00195">195</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -925,7 +845,7 @@
<li><a class="el" href="integer_8cpp_source.html">integer.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:19 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.png
==============================================================================
Binary files. No diff available.
Added: sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail::base_integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(data_t<> *new_data, bool neg=false)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee6c6d706a8dc8cdd1a16b1e65a47e2">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(digit_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">_duplicate</a>(const base_integer &copy, size_t extra)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a04f1087ed90152d3cc1b803b359951ab">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">_get_digits</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4dbd638f790c50cfb2f68af5d3852372">_get_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a>(size_t new_digit_count)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">_set_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(bool neg)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a94ba0c5d0b11588062116ebf6263f2cc">base_integer</a>(size_t count, digit_t mask, void *d)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+</table></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,669 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::detail::base_integer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1detail.html">detail</a>::<a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail::base_integer Class Reference</h1><!-- doxytag: class="boost::xint::detail::base_integer" -->
+<p>The base class for the integer classes.
+More...</p>
+<div class="dynheader">
+Inheritance diagram for boost::xint::detail::base_integer:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classboost_1_1xint_1_1detail_1_1base__integer.png" usemap="#boost::xint::detail::base_integer_map" alt=""/>
+ <map id="boost::xint::detail::base_integer_map" name="boost::xint::detail::base_integer_map">
+<area href="classboost_1_1xint_1_1integer.html" alt="boost::xint::integer" shape="rect" coords="0,56,182,80"/>
+<area href="classboost_1_1xint_1_1nothrow__integer.html" alt="boost::xint::nothrow_integer" shape="rect" coords="192,56,374,80"/>
+</map>
+ </div>
+</div>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">~base_integer</a> ()</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a> (size_t index) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a04f1087ed90152d3cc1b803b359951ab">_get_digit</a> (size_t index, bool) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">_get_digits</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4dbd638f790c50cfb2f68af5d3852372">_get_digits</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a> (bool neg)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a> (size_t new_digit_count)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">_duplicate</a> (const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> &copy, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a> (size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a> (size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a> (const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a> (const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> &n)</td></tr>
+<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a94ba0c5d0b11588062116ebf6263f2cc">base_integer</a> (size_t count, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask, void *d)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a><> *new_data, bool neg=false)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee6c6d706a8dc8cdd1a16b1e65a47e2">_attach</a> (const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> &copy)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a> (boost::uintmax_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">_set_n</a> (boost::uintmax_t n)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The base class for the integer classes. </p>
+
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00085">85</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a33dd417aa6d0a7892efe3d497b8f3f80"></a><!-- doxytag: member="boost::xint::detail::base_integer::~base_integer" ref="a33dd417aa6d0a7892efe3d497b8f3f80" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::detail::base_integer::~base_integer </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00041">41</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0e91eb0fd9e83d3cfc284d5b7e20207e"></a><!-- doxytag: member="boost::xint::detail::base_integer::base_integer" ref="a0e91eb0fd9e83d3cfc284d5b7e20207e" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::detail::base_integer::base_integer </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [inline, protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00110">110</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a94ba0c5d0b11588062116ebf6263f2cc"></a><!-- doxytag: member="boost::xint::detail::base_integer::base_integer" ref="a94ba0c5d0b11588062116ebf6263f2cc" args="(size_t count, digit_t mask, void *d)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::detail::base_integer::base_integer </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>mask</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void * </td>
+ <td class="paramname"> <em>d</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00028">28</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a3e0e821a38c37d4b94b61a62a9448b42"></a><!-- doxytag: member="boost::xint::detail::base_integer::_add" ref="a3e0e821a38c37d4b94b61a62a9448b42" args="(const base_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_add </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00215">215</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9ee6c6d706a8dc8cdd1a16b1e65a47e2"></a><!-- doxytag: member="boost::xint::detail::base_integer::_attach" ref="a9ee6c6d706a8dc8cdd1a16b1e65a47e2" args="(const base_integer &copy)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_attach </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>copy</em></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00084">84</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0ff9a2dc0d72f2c16caf68c6277cdab9"></a><!-- doxytag: member="boost::xint::detail::base_integer::_attach" ref="a0ff9a2dc0d72f2c16caf68c6277cdab9" args="(data_t<> *new_data, bool neg=false)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_attach </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a><> * </td>
+ <td class="paramname"> <em>new_data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>neg</em> = <code>false</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00071">71</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4f2678c34cdf09e8df0c38ea91347fd7"></a><!-- doxytag: member="boost::xint::detail::base_integer::_attach_0" ref="a4f2678c34cdf09e8df0c38ea91347fd7" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_attach_0 </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00088">88</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab94f96758a658c1523291c6d10ca7dc0"></a><!-- doxytag: member="boost::xint::detail::base_integer::_attach_1" ref="ab94f96758a658c1523291c6d10ca7dc0" args="(digit_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_attach_1 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00092">92</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a00be0a0a2d19316259c54a8ced4e8451"></a><!-- doxytag: member="boost::xint::detail::base_integer::_attach_n" ref="a00be0a0a2d19316259c54a8ced4e8451" args="(boost::uintmax_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_attach_n </td>
+ <td>(</td>
+ <td class="paramtype">boost::uintmax_t </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00101">101</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abdfe224ab8dae4dbd4cfdd16e6c0612f"></a><!-- doxytag: member="boost::xint::detail::base_integer::_base_make_unique" ref="abdfe224ab8dae4dbd4cfdd16e6c0612f" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_base_make_unique </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00211">211</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab74b3c73fe6560f1f760b1a94612b189"></a><!-- doxytag: member="boost::xint::detail::base_integer::_cleanup" ref="ab74b3c73fe6560f1f760b1a94612b189" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_cleanup </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00136">136</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad75a8d9bef5eb2d57cbac37cafd925eb"></a><!-- doxytag: member="boost::xint::detail::base_integer::_duplicate" ref="ad75a8d9bef5eb2d57cbac37cafd925eb" args="(const base_integer &copy, size_t extra)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_duplicate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>copy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>extra</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00066">66</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a04f1087ed90152d3cc1b803b359951ab"></a><!-- doxytag: member="boost::xint::detail::base_integer::_get_digit" ref="a04f1087ed90152d3cc1b803b359951ab" args="(size_t index, bool) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> boost::xint::detail::base_integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>index</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00049">49</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aad96a1fe27c2b1da6fe933acc444d98f"></a><!-- doxytag: member="boost::xint::detail::base_integer::_get_digit" ref="aad96a1fe27c2b1da6fe933acc444d98f" args="(size_t index) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> boost::xint::detail::base_integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>index</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00045">45</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4dbd638f790c50cfb2f68af5d3852372"></a><!-- doxytag: member="boost::xint::detail::base_integer::_get_digits" ref="a4dbd638f790c50cfb2f68af5d3852372" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> * boost::xint::detail::base_integer::_get_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00058">58</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9ee8727d51762352bba8ea8e3b8489f2"></a><!-- doxytag: member="boost::xint::detail::base_integer::_get_digits" ref="a9ee8727d51762352bba8ea8e3b8489f2" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> * boost::xint::detail::base_integer::_get_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00054">54</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7462afdf5589caa01bb1ed732f633469"></a><!-- doxytag: member="boost::xint::detail::base_integer::_get_length" ref="a7462afdf5589caa01bb1ed732f633469" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::detail::base_integer::_get_length </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00062">62</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2a6ba9a67a9167e9535d735dacbaace7"></a><!-- doxytag: member="boost::xint::detail::base_integer::_get_negative" ref="a2a6ba9a67a9167e9535d735dacbaace7" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::detail::base_integer::_get_negative </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00128">128</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afdaa612dd6669a12d349d6268f1ea3ff"></a><!-- doxytag: member="boost::xint::detail::base_integer::_is_nan" ref="afdaa612dd6669a12d349d6268f1ea3ff" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::detail::base_integer::_is_nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const<code> [inline, protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00113">113</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aee70939aaa336233f62341cf7d595010"></a><!-- doxytag: member="boost::xint::detail::base_integer::_is_unique" ref="aee70939aaa336233f62341cf7d595010" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::detail::base_integer::_is_unique </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00120">120</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a576bd802f9b2cb8450250839bc52b98c"></a><!-- doxytag: member="boost::xint::detail::base_integer::_is_zero" ref="a576bd802f9b2cb8450250839bc52b98c" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::detail::base_integer::_is_zero </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00124">124</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a36175e45a3f8660f59a9de593328fefd"></a><!-- doxytag: member="boost::xint::detail::base_integer::_realloc" ref="a36175e45a3f8660f59a9de593328fefd" args="(size_t new_digit_count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_realloc </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>new_digit_count</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00144">144</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0980c3f09050640e8f33a9f10bcd2c38"></a><!-- doxytag: member="boost::xint::detail::base_integer::_set_n" ref="a0980c3f09050640e8f33a9f10bcd2c38" args="(boost::uintmax_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_set_n </td>
+ <td>(</td>
+ <td class="paramtype">boost::uintmax_t </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00109">109</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a91cb2f84f30425e9158c2ac9bfcd9cb6"></a><!-- doxytag: member="boost::xint::detail::base_integer::_set_negative" ref="a91cb2f84f30425e9158c2ac9bfcd9cb6" args="(bool neg)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_set_negative </td>
+ <td>(</td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>neg</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00132">132</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aea0cff03f7886f2c44747538e27ad7f1"></a><!-- doxytag: member="boost::xint::detail::base_integer::_shift_left" ref="aea0cff03f7886f2c44747538e27ad7f1" args="(size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_shift_left </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00149">149</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8236c349f72d154823d592123d94f218"></a><!-- doxytag: member="boost::xint::detail::base_integer::_shift_right" ref="a8236c349f72d154823d592123d94f218" args="(size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_shift_right </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00178">178</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4f7e982aa22a1910dd5daf0e260c43c5"></a><!-- doxytag: member="boost::xint::detail::base_integer::_subtract" ref="a4f7e982aa22a1910dd5daf0e260c43c5" args="(const base_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::base_integer::_subtract </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="base__integer_8cpp_source.html#l00245">245</a> of file <a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+<li><a class="el" href="base__integer_8cpp_source.html">base_integer.cpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1detail_1_1base__integer.png
==============================================================================
Binary file. No diff available.
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1cannot__represent-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1cannot__represent-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::cannot_represent Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1cannot__represent.html">boost::xint::exception::cannot_represent</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1cannot__represent.html#ac139cee00f7b95cd24e3c1ca08df94f4">cannot_represent</a>(const std::string &what="cannot represent the requested value")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1cannot__represent.html">boost::xint::exception::cannot_represent</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1cannot__represent.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1cannot__represent.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::cannot_represent Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1cannot__represent.html">cannot_represent</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::cannot_represent Class Reference</h1><!-- doxytag: class="boost::xint::exception::cannot_represent" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1cannot__represent.html#ac139cee00f7b95cd24e3c1ca08df94f4">cannot_represent</a> (const std::string &what="cannot represent the requested value")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00072">72</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="ac139cee00f7b95cd24e3c1ca08df94f4"></a><!-- doxytag: member="boost::xint::exception::cannot_represent::cannot_represent" ref="ac139cee00f7b95cd24e3c1ca08df94f4" args="(const std::string &what="cannot represent the requested value")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::cannot_represent::cannot_represent </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"cannot represent the requested value"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00074">74</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1divide__by__zero-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1divide__by__zero-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::divide_by_zero Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html">boost::xint::exception::divide_by_zero</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html#a0204a971605df703d92d4138d8887787">divide_by_zero</a>(const std::string &what="divide by zero error")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html">boost::xint::exception::divide_by_zero</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1divide__by__zero.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1divide__by__zero.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::divide_by_zero Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html">divide_by_zero</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::divide_by_zero Class Reference</h1><!-- doxytag: class="boost::xint::exception::divide_by_zero" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html#a0204a971605df703d92d4138d8887787">divide_by_zero</a> (const std::string &what="divide by zero error")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00063">63</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a0204a971605df703d92d4138d8887787"></a><!-- doxytag: member="boost::xint::exception::divide_by_zero::divide_by_zero" ref="a0204a971605df703d92d4138d8887787" args="(const std::string &what="divide by zero error")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::divide_by_zero::divide_by_zero </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"divide by zero error"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00065">65</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__argument-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__argument-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::invalid_argument Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html">boost::xint::exception::invalid_argument</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html#a4d4ee3beec234fe35528af87932a35d7">invalid_argument</a>(const std::string &what="invalid argument")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html">boost::xint::exception::invalid_argument</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__argument.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__argument.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::invalid_argument Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html">invalid_argument</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::invalid_argument Class Reference</h1><!-- doxytag: class="boost::xint::exception::invalid_argument" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html#a4d4ee3beec234fe35528af87932a35d7">invalid_argument</a> (const std::string &what="invalid argument")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00027">27</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a4d4ee3beec234fe35528af87932a35d7"></a><!-- doxytag: member="boost::xint::exception::invalid_argument::invalid_argument" ref="a4d4ee3beec234fe35528af87932a35d7" args="(const std::string &what="invalid argument")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::invalid_argument::invalid_argument </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid argument"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00024">24</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__base-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__base-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::invalid_base Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">boost::xint::exception::invalid_base</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html#a3832b2e8e712672d3cdeb829b6014dcd">invalid_base</a>(const std::string &what="invalid base")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">boost::xint::exception::invalid_base</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__base.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__base.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::invalid_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">invalid_base</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::invalid_base Class Reference</h1><!-- doxytag: class="boost::xint::exception::invalid_base" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html#a3832b2e8e712672d3cdeb829b6014dcd">invalid_base</a> (const std::string &what="invalid base")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00036">36</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a3832b2e8e712672d3cdeb829b6014dcd"></a><!-- doxytag: member="boost::xint::exception::invalid_base::invalid_base" ref="a3832b2e8e712672d3cdeb829b6014dcd" args="(const std::string &what="invalid base")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::invalid_base::invalid_base </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid base"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00038">38</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__digit-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__digit-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::invalid_digit Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html">boost::xint::exception::invalid_digit</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html#a38619f688309de7aa08b135a652f4437">invalid_digit</a>(const std::string &what="invalid digit")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html">boost::xint::exception::invalid_digit</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__digit.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__digit.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::invalid_digit Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html">invalid_digit</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::invalid_digit Class Reference</h1><!-- doxytag: class="boost::xint::exception::invalid_digit" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html#a38619f688309de7aa08b135a652f4437">invalid_digit</a> (const std::string &what="invalid digit")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::range_error</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00045">45</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a38619f688309de7aa08b135a652f4437"></a><!-- doxytag: member="boost::xint::exception::invalid_digit::invalid_digit" ref="a38619f688309de7aa08b135a652f4437" args="(const std::string &what="invalid digit")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::invalid_digit::invalid_digit </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid digit"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00047">47</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__modulus-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__modulus-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::invalid_modulus Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html">boost::xint::exception::invalid_modulus</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html#ab73f8c969e5a24b1245f3e6762767c43">invalid_modulus</a>(const std::string &what="invalid modulus")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html">boost::xint::exception::invalid_modulus</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__modulus.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1invalid__modulus.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::invalid_modulus Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html">invalid_modulus</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::invalid_modulus Class Reference</h1><!-- doxytag: class="boost::xint::exception::invalid_modulus" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html#ab73f8c969e5a24b1245f3e6762767c43">invalid_modulus</a> (const std::string &what="invalid modulus")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00054">54</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="ab73f8c969e5a24b1245f3e6762767c43"></a><!-- doxytag: member="boost::xint::exception::invalid_modulus::invalid_modulus" ref="ab73f8c969e5a24b1245f3e6762767c43" args="(const std::string &what="invalid modulus")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::invalid_modulus::invalid_modulus </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid modulus"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00056">56</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1no__strong__random-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1no__strong__random-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::no_strong_random Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1no__strong__random.html">boost::xint::exception::no_strong_random</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1no__strong__random.html#a50ec38265d2b627b0db9d52fcdd43b22">no_strong_random</a>(const std::string &what="system does not have a strong random generator")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1no__strong__random.html">boost::xint::exception::no_strong_random</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1no__strong__random.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1no__strong__random.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::no_strong_random Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1no__strong__random.html">no_strong_random</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::no_strong_random Class Reference</h1><!-- doxytag: class="boost::xint::exception::no_strong_random" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1no__strong__random.html#a50ec38265d2b627b0db9d52fcdd43b22">no_strong_random</a> (const std::string &what="system does not have a strong random generator")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::runtime_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Thrown by the <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">xint::strong_random_generator</a> class's constructor, if the system does not provide a cryptographically-secure random generator. Also thrown if the generator fails when asked to provide a random value, though this should be vanishingly rare. </dd></dl>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00109">109</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a50ec38265d2b627b0db9d52fcdd43b22"></a><!-- doxytag: member="boost::xint::exception::no_strong_random::no_strong_random" ref="a50ec38265d2b627b0db9d52fcdd43b22" args="(const std::string &what="system does not have a strong random generator")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::no_strong_random::no_strong_random </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"system does not have a strong random generator"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00111">111</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1not__a__number-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1not__a__number-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::not_a_number Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">boost::xint::exception::not_a_number</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1not__a__number.html#a68017083435ebd194bc6dcf23db5ac7d">not_a_number</a>(const std::string &what="attempted to use a Not-a-Number")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">boost::xint::exception::not_a_number</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1not__a__number.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1not__a__number.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::not_a_number Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">not_a_number</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::not_a_number Class Reference</h1><!-- doxytag: class="boost::xint::exception::not_a_number" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1not__a__number.html#a68017083435ebd194bc6dcf23db5ac7d">not_a_number</a> (const std::string &what="attempted to use a Not-a-Number")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::runtime_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Most library functions will throw a <a class="el" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">not_a_number</a> exception if you try to use a <a class="el" href="nan.html">Not-a-Number value</a> in them. </dd></dl>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00094">94</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a68017083435ebd194bc6dcf23db5ac7d"></a><!-- doxytag: member="boost::xint::exception::not_a_number::not_a_number" ref="a68017083435ebd194bc6dcf23db5ac7d" args="(const std::string &what="attempted to use a Not-a-Number")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::not_a_number::not_a_number </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"attempted to use a Not-a-Number"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00096">96</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1overflow__error-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1overflow__error-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::overflow_error Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1overflow__error.html">boost::xint::exception::overflow_error</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1overflow__error.html#a0d564e0b899c1eedb99e36b35f53423b">overflow_error</a>(const std::string &what="overflow error: can't obtain enough memory to represent the requested number")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1overflow__error.html">boost::xint::exception::overflow_error</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1overflow__error.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1overflow__error.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::overflow_error Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1overflow__error.html">overflow_error</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::overflow_error Class Reference</h1><!-- doxytag: class="boost::xint::exception::overflow_error" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1overflow__error.html#a0d564e0b899c1eedb99e36b35f53423b">overflow_error</a> (const std::string &what="overflow error: can't obtain enough memory to represent the requested number")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::overflow_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Thrown when the library can't get enough memory to represent a number. </dd></dl>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00122">122</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a0d564e0b899c1eedb99e36b35f53423b"></a><!-- doxytag: member="boost::xint::exception::overflow_error::overflow_error" ref="a0d564e0b899c1eedb99e36b35f53423b" args="(const std::string &what="overflow error: can't obtain enough memory to represent the requested number")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::overflow_error::overflow_error </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"overflow error: can't obtain enough memory to represent the requested number"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00124">124</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1too__big-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1too__big-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exception::too_big Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exception_1_1too__big.html">boost::xint::exception::too_big</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exception_1_1too__big.html#a9523b1e0ed7eda9ad95b1c424b10bb59">too_big</a>(const std::string &what="value out of range for requested conversion")</td><td><a class="el" href="classboost_1_1xint_1_1exception_1_1too__big.html">boost::xint::exception::too_big</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1too__big.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exception_1_1too__big.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception::too_big Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>::<a class="el" href="classboost_1_1xint_1_1exception_1_1too__big.html">too_big</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception::too_big Class Reference</h1><!-- doxytag: class="boost::xint::exception::too_big" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1too__big.html#a9523b1e0ed7eda9ad95b1c424b10bb59">too_big</a> (const std::string &what="value out of range for requested conversion")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::range_error</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00081">81</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a9523b1e0ed7eda9ad95b1c424b10bb59"></a><!-- doxytag: member="boost::xint::exception::too_big::too_big" ref="a9523b1e0ed7eda9ad95b1c424b10bb59" args="(const std::string &what="value out of range for requested conversion")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exception::too_big::too_big </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"value out of range for requested conversion"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00083">83</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::cannot_represent Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">boost::xint::exceptions::cannot_represent</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html#a0968d8ac61c24529816bcaf69d155b75">cannot_represent</a>(const std::string &what="cannot represent the requested value")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">boost::xint::exceptions::cannot_represent</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::cannot_represent Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">cannot_represent</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::cannot_represent Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::cannot_represent" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html#a0968d8ac61c24529816bcaf69d155b75">cannot_represent</a> (const std::string &what="cannot represent the requested value")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00072">72</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a0968d8ac61c24529816bcaf69d155b75"></a><!-- doxytag: member="boost::xint::exceptions::cannot_represent::cannot_represent" ref="a0968d8ac61c24529816bcaf69d155b75" args="(const std::string &what="cannot represent the requested value")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::cannot_represent::cannot_represent </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"cannot represent the requested value"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00074">74</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::divide_by_zero Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">boost::xint::exceptions::divide_by_zero</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html#aaff4d720e4a134315acde919ff06e640">divide_by_zero</a>(const std::string &what="divide by zero error")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">boost::xint::exceptions::divide_by_zero</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::divide_by_zero Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">divide_by_zero</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::divide_by_zero Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::divide_by_zero" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html#aaff4d720e4a134315acde919ff06e640">divide_by_zero</a> (const std::string &what="divide by zero error")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00063">63</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="aaff4d720e4a134315acde919ff06e640"></a><!-- doxytag: member="boost::xint::exceptions::divide_by_zero::divide_by_zero" ref="aaff4d720e4a134315acde919ff06e640" args="(const std::string &what="divide by zero error")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::divide_by_zero::divide_by_zero </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"divide by zero error"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00065">65</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::invalid_argument Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">boost::xint::exceptions::invalid_argument</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html#a8ba3e56172de34c772b287ce8e325f32">invalid_argument</a>(const std::string &what="invalid argument")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">boost::xint::exceptions::invalid_argument</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::invalid_argument Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::invalid_argument Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::invalid_argument" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html#a8ba3e56172de34c772b287ce8e325f32">invalid_argument</a> (const std::string &what="invalid argument")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00027">27</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a8ba3e56172de34c772b287ce8e325f32"></a><!-- doxytag: member="boost::xint::exceptions::invalid_argument::invalid_argument" ref="a8ba3e56172de34c772b287ce8e325f32" args="(const std::string &what="invalid argument")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::invalid_argument::invalid_argument </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid argument"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00024">24</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::invalid_base Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">boost::xint::exceptions::invalid_base</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html#a4647071020547bd103ee885bec7edffa">invalid_base</a>(const std::string &what="invalid base")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">boost::xint::exceptions::invalid_base</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::invalid_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">invalid_base</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::invalid_base Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::invalid_base" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html#a4647071020547bd103ee885bec7edffa">invalid_base</a> (const std::string &what="invalid base")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00036">36</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a4647071020547bd103ee885bec7edffa"></a><!-- doxytag: member="boost::xint::exceptions::invalid_base::invalid_base" ref="a4647071020547bd103ee885bec7edffa" args="(const std::string &what="invalid base")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::invalid_base::invalid_base </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid base"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00038">38</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::invalid_digit Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">boost::xint::exceptions::invalid_digit</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html#abcdf43b30c3910dde89e406ca802eacc">invalid_digit</a>(const std::string &what="invalid digit")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">boost::xint::exceptions::invalid_digit</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::invalid_digit Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">invalid_digit</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::invalid_digit Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::invalid_digit" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html#abcdf43b30c3910dde89e406ca802eacc">invalid_digit</a> (const std::string &what="invalid digit")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::range_error</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00045">45</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="abcdf43b30c3910dde89e406ca802eacc"></a><!-- doxytag: member="boost::xint::exceptions::invalid_digit::invalid_digit" ref="abcdf43b30c3910dde89e406ca802eacc" args="(const std::string &what="invalid digit")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::invalid_digit::invalid_digit </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid digit"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00047">47</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::invalid_modulus Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">boost::xint::exceptions::invalid_modulus</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html#a16c06e28a7f483b0ca2fb5906d53278d">invalid_modulus</a>(const std::string &what="invalid modulus")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">boost::xint::exceptions::invalid_modulus</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::invalid_modulus Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">invalid_modulus</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::invalid_modulus Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::invalid_modulus" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html#a16c06e28a7f483b0ca2fb5906d53278d">invalid_modulus</a> (const std::string &what="invalid modulus")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00054">54</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a16c06e28a7f483b0ca2fb5906d53278d"></a><!-- doxytag: member="boost::xint::exceptions::invalid_modulus::invalid_modulus" ref="a16c06e28a7f483b0ca2fb5906d53278d" args="(const std::string &what="invalid modulus")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::invalid_modulus::invalid_modulus </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid modulus"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00056">56</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::no_strong_random Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">boost::xint::exceptions::no_strong_random</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html#ab225c7d5d10a03eac6d5e9c784135675">no_strong_random</a>(const std::string &what="system does not have a strong random generator")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">boost::xint::exceptions::no_strong_random</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::no_strong_random Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">no_strong_random</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::no_strong_random Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::no_strong_random" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html#ab225c7d5d10a03eac6d5e9c784135675">no_strong_random</a> (const std::string &what="system does not have a strong random generator")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::runtime_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Thrown by the <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">xint::strong_random_generator</a> class's constructor, if the system does not provide a cryptographically-secure random generator. Also thrown if the generator fails when asked to provide a random value, though this should be vanishingly rare. </dd></dl>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00109">109</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="ab225c7d5d10a03eac6d5e9c784135675"></a><!-- doxytag: member="boost::xint::exceptions::no_strong_random::no_strong_random" ref="ab225c7d5d10a03eac6d5e9c784135675" args="(const std::string &what="system does not have a strong random generator")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::no_strong_random::no_strong_random </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"system does not have a strong random generator"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00111">111</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::not_a_number Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">boost::xint::exceptions::not_a_number</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html#aa47b024550fd673bd497e0875443c67f">not_a_number</a>(const std::string &what="attempted to use a Not-a-Number")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">boost::xint::exceptions::not_a_number</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::not_a_number Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">not_a_number</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::not_a_number Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::not_a_number" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html#aa47b024550fd673bd497e0875443c67f">not_a_number</a> (const std::string &what="attempted to use a Not-a-Number")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::runtime_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Most library functions will throw a <a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">not_a_number</a> exception if you try to use a <a class="el" href="nan.html">Not-a-Number value</a> in them. </dd></dl>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00094">94</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="aa47b024550fd673bd497e0875443c67f"></a><!-- doxytag: member="boost::xint::exceptions::not_a_number::not_a_number" ref="aa47b024550fd673bd497e0875443c67f" args="(const std::string &what="attempted to use a Not-a-Number")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::not_a_number::not_a_number </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"attempted to use a Not-a-Number"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00096">96</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::overflow_error Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">boost::xint::exceptions::overflow_error</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html#a767d8fbe5816d77fa0aadf9481d0bd5a">overflow_error</a>(const std::string &what="overflow error: can't obtain enough memory to represent the requested number")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">boost::xint::exceptions::overflow_error</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::overflow_error Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">overflow_error</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::overflow_error Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::overflow_error" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html#a767d8fbe5816d77fa0aadf9481d0bd5a">overflow_error</a> (const std::string &what="overflow error: can't obtain enough memory to represent the requested number")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::overflow_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Thrown when the library can't get enough memory to represent a number. </dd></dl>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00122">122</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a767d8fbe5816d77fa0aadf9481d0bd5a"></a><!-- doxytag: member="boost::xint::exceptions::overflow_error::overflow_error" ref="a767d8fbe5816d77fa0aadf9481d0bd5a" args="(const std::string &what="overflow error: can't obtain enough memory to represent the requested number")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::overflow_error::overflow_error </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"overflow error: can't obtain enough memory to represent the requested number"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00124">124</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html (from r61200, /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html)
==============================================================================
--- /sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,11 +27,10 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+<h1>boost::xint::exceptions::too_big Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">boost::xint::exceptions::too_big</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html#a111e2c1a759054d80afcd5fa4af2995c">too_big</a>(const std::string &what="value out of range for requested conversion")</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">boost::xint::exceptions::too_big</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions::too_big Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>::<a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">too_big</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions::too_big Class Reference</h1><!-- doxytag: class="boost::xint::exceptions::too_big" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html#a111e2c1a759054d80afcd5fa4af2995c">too_big</a> (const std::string &what="value out of range for requested conversion")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Derived from <code>std::range_error</code>. </p>
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00081">81</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a111e2c1a759054d80afcd5fa4af2995c"></a><!-- doxytag: member="boost::xint::exceptions::too_big::too_big" ref="a111e2c1a759054d80afcd5fa4af2995c" args="(const std::string &what="value out of range for requested conversion")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::exceptions::too_big::too_big </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"value out of range for requested conversion"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="exceptions_8hpp_source.html#l00083">83</a> of file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(data_t<> *new_data, bool neg=false)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee6c6d706a8dc8cdd1a16b1e65a47e2">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(digit_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">_duplicate</a>(const base_integer &copy, size_t extra)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a04f1087ed90152d3cc1b803b359951ab">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">_get_digits</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4dbd638f790c50cfb2f68af5d3852372">_get_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a>(size_t new_digit_count)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">_set_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(bool neg)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a94ba0c5d0b11588062116ebf6263f2cc">base_integer</a>(size_t count, digit_t mask, void *d)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">integer</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#acc0aea50091f653fb983373e12fc815e">integer</a>(const nothrow_integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">integer</a>(const std::string &str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#acf287891cafa7f5b20f5e56476fa1fc6">integer</a>(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">integer</a>(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">operator&=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator<<</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">operator<<=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a>(const integer &c)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">operator>></a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">operator>>=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae">sign</a>(bool signed_zero=false) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+</table></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/classboost_1_1xint_1_1integer.html (from r61200, /sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html)
==============================================================================
--- /sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1integer.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: boost::xint::core::integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::integer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -25,104 +25,99 @@
<li>Class Members</li>
</ul>
</div>
- <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1core.html">core</a>::<a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>
</div>
</div>
<div class="contents">
-<h1>boost::xint::core::integer Class Reference</h1><!-- doxytag: class="boost::xint::core::integer" --><!-- doxytag: inherits="boost::xint::core::base_integer" -->
+<h1>boost::xint::integer Class Reference</h1><!-- doxytag: class="boost::xint::integer" --><!-- doxytag: inherits="boost::xint::detail::base_integer" -->
<p>The core integer class.
<a href="#_details">More...</a></p>
<div class="dynheader">
-Inheritance diagram for boost::xint::core::integer:</div>
+Inheritance diagram for boost::xint::integer:</div>
<div class="dynsection">
<div class="center">
- <img src="classboost_1_1xint_1_1core_1_1integer.png" usemap="#boost::xint::core::integer_map" alt=""/>
- <map id="boost::xint::core::integer_map" name="boost::xint::core::integer_map">
-<area href="classboost_1_1xint_1_1core_1_1base__integer.html" alt="boost::xint::core::base_integer" shape="rect" coords="0,0,178,24"/>
+ <img src="classboost_1_1xint_1_1integer.png" usemap="#boost::xint::integer_map" alt=""/>
+ <map id="boost::xint::integer_map" name="boost::xint::integer_map">
+<area href="classboost_1_1xint_1_1detail_1_1base__integer.html" alt="boost::xint::detail::base_integer" shape="rect" coords="0,0,182,24"/>
</map>
</div>
</div>
-<p>List of all members.</p>
+<p>List of all members.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Constructors & Destructors</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpab1e74c734dea693114ec1f1cb9434ad"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new integer with an initial value of zero. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">integer</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a copy of an existing integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ad0f5b3fdf28a3e2892198dd1c39afe82">integer</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">blockable::integer</a> &b)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an integer from a <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">integer</a> (const std::string &str, size_t base=10)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an integer from a string representation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">integer</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new integer with an initial value of zero. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">integer</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a copy of an existing integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#acc0aea50091f653fb983373e12fc815e">integer</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an integer from a <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">integer</a> (const std::string &str, size_t base=10)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an integer from a string representation. <br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#acf287891cafa7f5b20f5e56476fa1fc6">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Mathematical and Bitwise Operators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp8eb1e0f0af70edd858d54ba68b80ce7e"></a>These operate exactly like their counterparts for the built-in integer types.</p>
<p>Note that there is no <code>operator~</code>. Since the integer type doesn't have a fixed maximum size, there is no logical way to implement it. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab04d9f5bfe1d4b9d10acf4cf3f8a6115">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab30e34305c00e55f9ea0012085c49c9d">operator--</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">operator&=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">operator<<</a> (size_t shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">operator>></a> (size_t shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">operator<<=</a> (size_t shift)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator>>=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">operator++</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">operator--</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">operator&=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator<<</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">operator>></a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">operator<<=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">operator>>=</a> (size_t shift)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous Functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf5be5219a55995e13d6b8d7bf99ed653"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">odd</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine oddness. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">even</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine evenness. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the sign of <code>*this</code>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">hex_digits</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells you roughly how large an integer is. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">odd</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine oddness. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">even</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine evenness. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae">sign</a> (bool signed_zero=false) const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the sign of <code>*this</code>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">hex_digits</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells you roughly how large an integer is. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a>These functions allow access to the internals of the integer. They are intended for internal use only. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a> (bool negative)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a> ()</td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbc92fcddffc2f3092779f92fe2501e4a"></a> These return preconstructed integers with the values named by the functions. They are used internally, so that the most common values don't have to be constructed each time they're needed. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a> ()</td></tr>
-<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a> (boost::uintmax_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a> ()</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The core integer class. </p>
-<p>This class implements the "pure" <code>integer</code> type, uncontaminated by things like the Not-a-Number value.</p>
+<p>This class implements the standard <code>integer</code> type.</p>
<p>There are only a few member functions; most of the functionality is implemented using standalone functions.</p>
<p>Functions that start with an underscore (such as <code>_make_unique</code>) are intended for internal use only. They may change arbitrarily in future versions. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00173">173</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00039">39</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a4e99025a3cdbf0777f90effe05e97625"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="a4e99025a3cdbf0777f90effe05e97625" args="()" -->
+<a class="anchor" id="a33ad2603be1c3ae3823523265f7ee600"></a><!-- doxytag: member="boost::xint::integer::integer" ref="a33ad2603be1c3ae3823523265f7ee600" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">boost::xint::core::integer::integer </td>
+ <td class="memname">boost::xint::integer::integer </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -134,18 +129,18 @@
<p>Creates a new integer with an initial value of zero. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00082">82</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00029">29</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aa8a21b616c6c6f78f3c49686f897b067"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="aa8a21b616c6c6f78f3c49686f897b067" args="(const integer &b)" -->
+<a class="anchor" id="afc2ddd14b40ab91640d10b134d2b7141"></a><!-- doxytag: member="boost::xint::integer::integer" ref="afc2ddd14b40ab91640d10b134d2b7141" args="(const integer &b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">boost::xint::core::integer::integer </td>
+ <td class="memname">boost::xint::integer::integer </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td></td>
@@ -164,18 +159,18 @@
<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00097">97</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00044">44</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ad0f5b3fdf28a3e2892198dd1c39afe82"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="ad0f5b3fdf28a3e2892198dd1c39afe82" args="(const blockable::integer &b)" -->
+<a class="anchor" id="acc0aea50091f653fb983373e12fc815e"></a><!-- doxytag: member="boost::xint::integer::integer" ref="acc0aea50091f653fb983373e12fc815e" args="(const nothrow_integer &b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">boost::xint::core::integer::integer </td>
+ <td class="memname">boost::xint::integer::integer </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">blockable::integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td><code> [explicit]</code></td>
@@ -184,26 +179,26 @@
</div>
<div class="memdoc">
-<p>Creates an integer from a <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>. </p>
+<p>Creates an integer from a <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>An existing <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>An existing <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00111">111</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00058">58</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aa5b9d9f104ce714700b4a3a40eefb80f"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="aa5b9d9f104ce714700b4a3a40eefb80f" args="(const std::string &str, size_t base=10)" -->
+<a class="anchor" id="a179df60f5dc32f98b9f564ec20aff5a8"></a><!-- doxytag: member="boost::xint::integer::integer" ref="a179df60f5dc32f98b9f564ec20aff5a8" args="(const std::string &str, size_t base=10)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">boost::xint::core::integer::integer </td>
+ <td class="memname">boost::xint::integer::integer </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"> <em>str</em>, </td>
@@ -233,27 +228,27 @@
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">exceptions::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">exceptions::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
</table>
</dd>
</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This will convert a string representation of a number into an integer. See the description of the xint::from_string function for details on its behavior.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This will convert a string representation of a number into an integer. See the description of the <a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">from_string</a> function for details on its behavior.</dd></dl>
<dl class="user"><dt><b></b></dt><dd>This is the most common way to initialize values that are too large to fit into a native integral type.</dd></dl>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00136">136</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00084">84</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="afb6b73128973a835a261546f0a7fa0e7"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="afb6b73128973a835a261546f0a7fa0e7" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)" -->
+<a class="anchor" id="acf287891cafa7f5b20f5e56476fa1fc6"></a><!-- doxytag: member="boost::xint::integer::integer" ref="acf287891cafa7f5b20f5e56476fa1fc6" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename T > </div>
<table class="memname">
<tr>
- <td class="memname">boost::xint::core::integer::integer </td>
+ <td class="memname">boost::xint::integer::integer </td>
<td>(</td>
<td class="paramtype">const T & </td>
<td class="paramname"> <em>n</em>, </td>
@@ -294,18 +289,18 @@
<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00798">798</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00234">234</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a570690c9233ceb8d73dccb9af052f12b"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="a570690c9233ceb8d73dccb9af052f12b" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)" -->
+<a class="anchor" id="a9941bbf92bcfa48233110c451e676f64"></a><!-- doxytag: member="boost::xint::integer::integer" ref="a9941bbf92bcfa48233110c451e676f64" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename T > </div>
<table class="memname">
<tr>
- <td class="memname">boost::xint::core::integer::integer </td>
+ <td class="memname">boost::xint::integer::integer </td>
<td>(</td>
<td class="paramtype">const T & </td>
<td class="paramname"> <em>n</em>, </td>
@@ -346,79 +341,17 @@
<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00830">830</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00266">266</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a275c6dc7e675e5395ab16d92c9851429"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="a275c6dc7e675e5395ab16d92c9851429" args="(boost::uintmax_t n)" -->
+<a class="anchor" id="a04331a88bb2a975a7349e0c04cb230de"></a><!-- doxytag: member="boost::xint::integer::_make_unique" ref="a04331a88bb2a975a7349e0c04cb230de" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">void boost::xint::core::integer::_init </td>
- <td>(</td>
- <td class="paramtype">boost::uintmax_t </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00152">152</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab02f3ddc3b8bd2f892f8a072427076b4"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="ab02f3ddc3b8bd2f892f8a072427076b4" args="(const integer &c)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::core::integer::_init </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
- <td class="paramname"> <em>c</em></td>
- <td> ) </td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00148">148</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0a8f95e339c5c30a23313a4af6a40b51"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="a0a8f95e339c5c30a23313a4af6a40b51" args="(detail::digit_t init=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::core::integer::_init </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td>
- <td class="paramname"> <em>init</em> = <code>0</code></td>
- <td> ) </td>
- <td><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00140">140</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1f1b1c19c7c3ec22972124abdbd08cc1"></a><!-- doxytag: member="boost::xint::core::integer::_make_unique" ref="a1f1b1c19c7c3ec22972124abdbd08cc1" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::core::integer::_make_unique </td>
+ <td class="memname">void boost::xint::integer::_make_unique </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -428,36 +361,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00160">160</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00088">88</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a66b8657cfa608ce2fd95bfad869e09b3"></a><!-- doxytag: member="boost::xint::core::integer::_set_negative" ref="a66b8657cfa608ce2fd95bfad869e09b3" args="(bool negative)" -->
+<a class="anchor" id="afa36410b307d227f66657ea6f2116bdb"></a><!-- doxytag: member="boost::xint::integer::even" ref="afa36410b307d227f66657ea6f2116bdb" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">void boost::xint::core::integer::_set_negative </td>
- <td>(</td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>negative</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a61bef2a0575b9f331ca32686e489c9d3"></a><!-- doxytag: member="boost::xint::core::integer::even" ref="a61bef2a0575b9f331ca32686e489c9d3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::core::integer::even </td>
+ <td class="memname">bool boost::xint::integer::even </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -470,16 +383,16 @@
<p>Tests the lowest bit of <code>*this</code> to determine evenness. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00189">189</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00104">104</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a615f128085bba5e711c24be546449f43"></a><!-- doxytag: member="boost::xint::core::integer::hex_digits" ref="a615f128085bba5e711c24be546449f43" args="() const " -->
+<a class="anchor" id="af9206e301a190df90fa2e76a30238c6f"></a><!-- doxytag: member="boost::xint::integer::hex_digits" ref="af9206e301a190df90fa2e76a30238c6f" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">size_t boost::xint::core::integer::hex_digits </td>
+ <td class="memname">size_t boost::xint::integer::hex_digits </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -492,16 +405,16 @@
<p>Tells you roughly how large an integer is. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The number of hexadecimal digits that would be required to encode <code>this</code>. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00208">208</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00127">127</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a9eacfa2b1eea176019597ea25023e40e"></a><!-- doxytag: member="boost::xint::core::integer::odd" ref="a9eacfa2b1eea176019597ea25023e40e" args="() const " -->
+<a class="anchor" id="a5d17a8184d20e7829273f769550954c1"></a><!-- doxytag: member="boost::xint::integer::odd" ref="a5d17a8184d20e7829273f769550954c1" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::core::integer::odd </td>
+ <td class="memname">bool boost::xint::integer::odd </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -514,16 +427,16 @@
<p>Tests the lowest bit of <code>*this</code> to determine oddness. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00181">181</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00096">96</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="afcf74b546cda2690025c75325365a0fe"></a><!-- doxytag: member="boost::xint::core::integer::one" ref="afcf74b546cda2690025c75325365a0fe" args="()" -->
+<a class="anchor" id="aa332681715634b73118ffe76090a75d3"></a><!-- doxytag: member="boost::xint::integer::one" ref="aa332681715634b73118ffe76090a75d3" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::one </td>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::one </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -533,18 +446,18 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00280">280</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00199">199</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a182855c5d54a78bad4fde3e807d2cce1"></a><!-- doxytag: member="boost::xint::core::integer::operator%=" ref="a182855c5d54a78bad4fde3e807d2cce1" args="(const integer &b)" -->
+<a class="anchor" id="a1acfe3b61f26b7168fd103521f6deee9"></a><!-- doxytag: member="boost::xint::integer::operator%=" ref="a1acfe3b61f26b7168fd103521f6deee9" args="(const integer &b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator%= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator%= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td></td>
@@ -553,18 +466,18 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00246">246</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00165">165</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a00b096912c273f06aa0c0ea1284573d3"></a><!-- doxytag: member="boost::xint::core::integer::operator&=" ref="a00b096912c273f06aa0c0ea1284573d3" args="(const integer &n)" -->
+<a class="anchor" id="a717edb41c50edbd4b601c38b1fc6a8b0"></a><!-- doxytag: member="boost::xint::integer::operator&=" ref="a717edb41c50edbd4b601c38b1fc6a8b0" args="(const integer &n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator&= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator&= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>n</em></td>
<td> ) </td>
<td></td>
@@ -573,18 +486,18 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00255">255</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00174">174</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a6eb52f1f84758e968ae7ae684436a9bb"></a><!-- doxytag: member="boost::xint::core::integer::operator*=" ref="a6eb52f1f84758e968ae7ae684436a9bb" args="(const integer &b)" -->
+<a class="anchor" id="a3452b0a1af51a556bdcb6a3d087b44db"></a><!-- doxytag: member="boost::xint::integer::operator*=" ref="a3452b0a1af51a556bdcb6a3d087b44db" args="(const integer &b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator*= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator*= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td></td>
@@ -593,16 +506,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00244">244</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00163">163</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ab04d9f5bfe1d4b9d10acf4cf3f8a6115"></a><!-- doxytag: member="boost::xint::core::integer::operator++" ref="ab04d9f5bfe1d4b9d10acf4cf3f8a6115" args="(int)" -->
+<a class="anchor" id="acdb4dc0521b76fbb0e667905fddaaada"></a><!-- doxytag: member="boost::xint::integer::operator++" ref="acdb4dc0521b76fbb0e667905fddaaada" args="(int)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator++ </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator++ </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"></td>
@@ -614,16 +527,16 @@
<div class="memdoc">
<p>Postincrement operator -- not recommended, inefficient </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00250">250</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00169">169</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aa7e03bb3c9fe87c3205759d4ade6f714"></a><!-- doxytag: member="boost::xint::core::integer::operator++" ref="aa7e03bb3c9fe87c3205759d4ade6f714" args="()" -->
+<a class="anchor" id="ab15c60f8f28c2f520a26ab19e33c280c"></a><!-- doxytag: member="boost::xint::integer::operator++" ref="ab15c60f8f28c2f520a26ab19e33c280c" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator++ </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator++ </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -634,18 +547,18 @@
<div class="memdoc">
<p>Preincrement operator </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00248">248</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00167">167</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="afa137efa8b9fde22a3758ba020b819b7"></a><!-- doxytag: member="boost::xint::core::integer::operator+=" ref="afa137efa8b9fde22a3758ba020b819b7" args="(const integer &b)" -->
+<a class="anchor" id="a8ba263f6a5e51c15e3c51241d113c35e"></a><!-- doxytag: member="boost::xint::integer::operator+=" ref="a8ba263f6a5e51c15e3c51241d113c35e" args="(const integer &b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator+= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator+= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td></td>
@@ -654,16 +567,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00213">213</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00132">132</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ab30e34305c00e55f9ea0012085c49c9d"></a><!-- doxytag: member="boost::xint::core::integer::operator--" ref="ab30e34305c00e55f9ea0012085c49c9d" args="(int)" -->
+<a class="anchor" id="a628a1e9614bcb4d0916dd7869877807d"></a><!-- doxytag: member="boost::xint::integer::operator--" ref="a628a1e9614bcb4d0916dd7869877807d" args="(int)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator-- </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator-- </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"></td>
@@ -675,16 +588,16 @@
<div class="memdoc">
<p>Postdecrement operator -- not recommended, inefficient </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00251">251</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00170">170</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="af66a56ff7fcc62ed0d82a7f3205951fe"></a><!-- doxytag: member="boost::xint::core::integer::operator--" ref="af66a56ff7fcc62ed0d82a7f3205951fe" args="()" -->
+<a class="anchor" id="aa535f200d1d95306aae3d5f991df4e8f"></a><!-- doxytag: member="boost::xint::integer::operator--" ref="aa535f200d1d95306aae3d5f991df4e8f" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator-- </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator-- </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -695,18 +608,18 @@
<div class="memdoc">
<p>Predecrement operator </p>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00249">249</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aab4918c70e19e08e650e827b2c89e83f"></a><!-- doxytag: member="boost::xint::core::integer::operator-=" ref="aab4918c70e19e08e650e827b2c89e83f" args="(const integer &b)" -->
+<a class="anchor" id="a92f8f3cb4e080c43d889103e7606b7ba"></a><!-- doxytag: member="boost::xint::integer::operator-=" ref="a92f8f3cb4e080c43d889103e7606b7ba" args="(const integer &b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator-= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator-= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td></td>
@@ -715,18 +628,18 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00227">227</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00146">146</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a62d24cd0e4f033f7e44d0eadcaffec21"></a><!-- doxytag: member="boost::xint::core::integer::operator/=" ref="a62d24cd0e4f033f7e44d0eadcaffec21" args="(const integer &b)" -->
+<a class="anchor" id="a9e630e1f2cf12d29ad01de9c44dc8e3c"></a><!-- doxytag: member="boost::xint::integer::operator/=" ref="a9e630e1f2cf12d29ad01de9c44dc8e3c" args="(const integer &b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator/= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator/= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td></td>
@@ -735,16 +648,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00245">245</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00164">164</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a659279c9657ce38ef02c7290025cff5c"></a><!-- doxytag: member="boost::xint::core::integer::operator<<" ref="a659279c9657ce38ef02c7290025cff5c" args="(size_t shift) const " -->
+<a class="anchor" id="abc90075da0adaef0da2d0083e59af414"></a><!-- doxytag: member="boost::xint::integer::operator<<" ref="abc90075da0adaef0da2d0083e59af414" args="(size_t shift) const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator<< </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator<< </td>
<td>(</td>
<td class="paramtype">size_t </td>
<td class="paramname"> <em>shift</em></td>
@@ -755,16 +668,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00253">253</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00172">172</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="afde4e3672f01fd2fd4bf6091ca4e0547"></a><!-- doxytag: member="boost::xint::core::integer::operator<<=" ref="afde4e3672f01fd2fd4bf6091ca4e0547" args="(size_t shift)" -->
+<a class="anchor" id="a33f0a1167639a60ac8ad8ef0f3d3f585"></a><!-- doxytag: member="boost::xint::integer::operator<<=" ref="a33f0a1167639a60ac8ad8ef0f3d3f585" args="(size_t shift)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator<<= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator<<= </td>
<td>(</td>
<td class="paramtype">size_t </td>
<td class="paramname"> <em>shift</em></td>
@@ -775,18 +688,18 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00259">259</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00178">178</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a25202c72bffb37f2f7342633f0435fed"></a><!-- doxytag: member="boost::xint::core::integer::operator=" ref="a25202c72bffb37f2f7342633f0435fed" args="(const integer &c)" -->
+<a class="anchor" id="a9ae8cfa93f2e43cf0471266c54b06be2"></a><!-- doxytag: member="boost::xint::integer::operator=" ref="a9ae8cfa93f2e43cf0471266c54b06be2" args="(const integer &c)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>c</em></td>
<td> ) </td>
<td></td>
@@ -795,16 +708,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00239">239</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00158">158</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a792aecee632de9b1a8822bc414bd2c64"></a><!-- doxytag: member="boost::xint::core::integer::operator>>" ref="a792aecee632de9b1a8822bc414bd2c64" args="(size_t shift) const " -->
+<a class="anchor" id="a22af7cfcb28f97f4c8b78939265b46d6"></a><!-- doxytag: member="boost::xint::integer::operator>>" ref="a22af7cfcb28f97f4c8b78939265b46d6" args="(size_t shift) const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator>> </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator>> </td>
<td>(</td>
<td class="paramtype">size_t </td>
<td class="paramname"> <em>shift</em></td>
@@ -815,16 +728,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00254">254</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00173">173</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aac72a9392108a0f684e7f502bef3d8fe"></a><!-- doxytag: member="boost::xint::core::integer::operator>>=" ref="aac72a9392108a0f684e7f502bef3d8fe" args="(size_t shift)" -->
+<a class="anchor" id="a0ca39c4cb36160461fb9848cc9e7f2d4"></a><!-- doxytag: member="boost::xint::integer::operator>>=" ref="a0ca39c4cb36160461fb9848cc9e7f2d4" args="(size_t shift)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator>>= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator>>= </td>
<td>(</td>
<td class="paramtype">size_t </td>
<td class="paramname"> <em>shift</em></td>
@@ -835,18 +748,18 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00267">267</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00186">186</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a6c572b5a2976a88f0b214b0732a6d689"></a><!-- doxytag: member="boost::xint::core::integer::operator^=" ref="a6c572b5a2976a88f0b214b0732a6d689" args="(const integer &n)" -->
+<a class="anchor" id="a40fdf2cd80d53e173aa5129fe02289c3"></a><!-- doxytag: member="boost::xint::integer::operator^=" ref="a40fdf2cd80d53e173aa5129fe02289c3" args="(const integer &n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator^= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator^= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>n</em></td>
<td> ) </td>
<td></td>
@@ -855,18 +768,18 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00257">257</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00176">176</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a6778bfda930127b6f203cbb7967373b5"></a><!-- doxytag: member="boost::xint::core::integer::operator|=" ref="a6778bfda930127b6f203cbb7967373b5" args="(const integer &n)" -->
+<a class="anchor" id="a1fa48e6c6cefec7ae672156d27e79ec6"></a><!-- doxytag: member="boost::xint::integer::operator|=" ref="a1fa48e6c6cefec7ae672156d27e79ec6" args="(const integer &n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator|= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator|= </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
<td class="paramname"> <em>n</em></td>
<td> ) </td>
<td></td>
@@ -875,18 +788,19 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00256">256</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00175">175</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="abbb37de330e3a50ac3df337e5c0eb1c9"></a><!-- doxytag: member="boost::xint::core::integer::sign" ref="abbb37de330e3a50ac3df337e5c0eb1c9" args="() const " -->
+<a class="anchor" id="a6821767d0ec6c762a4c1002944550aae"></a><!-- doxytag: member="boost::xint::integer::sign" ref="a6821767d0ec6c762a4c1002944550aae" args="(bool signed_zero=false) const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">int boost::xint::core::integer::sign </td>
+ <td class="memname">int boost::xint::integer::sign </td>
<td>(</td>
- <td class="paramname"></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>signed_zero</em> = <code>false</code></td>
<td> ) </td>
<td> const</td>
</tr>
@@ -895,18 +809,24 @@
<div class="memdoc">
<p>Tests the sign of <code>*this</code>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>signed_zero</em> </td><td>If <code>false</code> (the default value), returns zero if <code>*this</code> is zero. If <code>true</code>, returns 1 or -1 on a zero <code>*this</code> as well. Primarily used to identify a <a class="el" href="zero.html">negative zero</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if <code>*this</code> is negative, 0 if it's zero, or 1 if it's greater than zero. </dd></dl>
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00198">198</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00117">117</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a5c4fdf4a0fd9cefd3f72b38413e32e9a"></a><!-- doxytag: member="boost::xint::core::integer::zero" ref="a5c4fdf4a0fd9cefd3f72b38413e32e9a" args="()" -->
+<a class="anchor" id="a5c08ebe10f3f6333328b35193edd53d0"></a><!-- doxytag: member="boost::xint::integer::zero" ref="a5c08ebe10f3f6333328b35193edd53d0" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::zero </td>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::zero </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -916,16 +836,16 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00275">275</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00194">194</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="integer_8hpp_source.html">integer.hpp</a></li>
<li><a class="el" href="integer_8cpp_source.html">integer.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classboost_1_1xint_1_1integer.png
==============================================================================
Binary file. No diff available.
Added: sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::nothrow_integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(data_t<> *new_data, bool neg=false)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee6c6d706a8dc8cdd1a16b1e65a47e2">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(digit_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">_duplicate</a>(const base_integer &copy, size_t extra)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a04f1087ed90152d3cc1b803b359951ab">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">_get_digits</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4dbd638f790c50cfb2f68af5d3852372">_get_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a>(size_t new_digit_count)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">_set_n</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(bool neg)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a>(size_t byBits)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a>(const base_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [inline, protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a94ba0c5d0b11588062116ebf6263f2cc">base_integer</a>(size_t count, digit_t mask, void *d)</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d">is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nan</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a9a9c9e622a764a004d256c18b7929081">nothrow_integer</a>(const nothrow_integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a195e4062a0f980e1bc9df47f8645854a">nothrow_integer</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a70c7b596f17102c6e292b8994dda76cc">nothrow_integer</a>(const std::string &str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#ab0e2e8c778ad3128a228418c46add112">nothrow_integer</a>(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a7f7d4d7c031c82eec324c3dafe74c9ad">nothrow_integer</a>(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">operator%=</a>(const nothrow_integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">operator&=</a>(const nothrow_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">operator*=</a>(const nothrow_integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#adf0e88fe1177733ae70496aa1a53a14d">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">operator+=</a>(const nothrow_integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#added2905dcd5b61db7fc6672831fc4eb">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">operator-=</a>(const nothrow_integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">operator/=</a>(const nothrow_integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">operator<<</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">operator<<=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">operator=</a>(const nothrow_integer &c)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">operator>></a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">operator>>=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">operator^=</a>(const nothrow_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">operator|=</a>(const nothrow_integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">sign</a>(bool signed_zero=false) const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">zero</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td><td></td></tr>
+</table></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,885 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::nothrow_integer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::nothrow_integer Class Reference</h1><!-- doxytag: class="boost::xint::nothrow_integer" --><!-- doxytag: inherits="boost::xint::detail::base_integer" -->
+<p>The nothrow_integer class.
+More...</p>
+<div class="dynheader">
+Inheritance diagram for boost::xint::nothrow_integer:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classboost_1_1xint_1_1nothrow__integer.png" usemap="#boost::xint::nothrow_integer_map" alt=""/>
+ <map id="boost::xint::nothrow_integer_map" name="boost::xint::nothrow_integer_map">
+<area href="classboost_1_1xint_1_1detail_1_1base__integer.html" alt="boost::xint::detail::base_integer" shape="rect" coords="0,0,182,24"/>
+</map>
+ </div>
+</div>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Constructors & Destructors</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpab1e74c734dea693114ec1f1cb9434ad"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a9a9c9e622a764a004d256c18b7929081">nothrow_integer</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a195e4062a0f980e1bc9df47f8645854a">nothrow_integer</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> from an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a70c7b596f17102c6e292b8994dda76cc">nothrow_integer</a> (const std::string &str, size_t base=10)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#ab0e2e8c778ad3128a228418c46add112">nothrow_integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a7f7d4d7c031c82eec324c3dafe74c9ad">nothrow_integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical and Bitwise Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp8eb1e0f0af70edd858d54ba68b80ce7e"></a>These operate exactly like their counterparts for the built-in integer types.</p>
+<p>Note that there is no <code>operator~</code>. Since the <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> type doesn't have a fixed maximum size, there is no logical way to implement it. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">operator++</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">operator--</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#adf0e88fe1177733ae70496aa1a53a14d">operator++</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#added2905dcd5b61db7fc6672831fc4eb">operator--</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">operator&=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">operator<<</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">operator>></a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">operator<<=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">operator>>=</a> (size_t shift)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf5be5219a55995e13d6b8d7bf99ed653"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">odd</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">even</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">sign</a> (bool signed_zero=false) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d">is_nan</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests <code>*this</code> for Not-a-Number. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">hex_digits</a> () const </td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a>These functions allow access to the internals of the integer. They are intended for internal use only. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">_make_unique</a> ()</td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbc92fcddffc2f3092779f92fe2501e4a"></a> These return preconstructed integers with the values named by the functions. They are used internally, so that the most common values don't have to be constructed each time they're needed. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">zero</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nan</a> ()</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The nothrow_integer class. </p>
+<p>Functions using this class do not throw exceptions, they return special values (most often <a class="el" href="nan.html">Not-a-Number</a>) to indicate failures.</p>
+<p>There are only a few member functions; most of the functionality is implemented using standalone functions.</p>
+<p>Functions that start with an underscore (such as <code>_make_unique</code>) are intended for internal use only. They may change arbitrarily in future versions. </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00040">40</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="add8423c7b0d729fe93a8aabf49d333ae"></a><!-- doxytag: member="boost::xint::nothrow_integer::nothrow_integer" ref="add8423c7b0d729fe93a8aabf49d333ae" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::nothrow_integer::nothrow_integer </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Creates a new integer with an initial value of zero. </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00034">34</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9a9c9e622a764a004d256c18b7929081"></a><!-- doxytag: member="boost::xint::nothrow_integer::nothrow_integer" ref="a9a9c9e622a764a004d256c18b7929081" args="(const nothrow_integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::nothrow_integer::nothrow_integer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Creates a copy of an existing integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>An existing integer. If passed a Not-a-Number, it will create another Not-a-Number.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00039">39</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a195e4062a0f980e1bc9df47f8645854a"></a><!-- doxytag: member="boost::xint::nothrow_integer::nothrow_integer" ref="a195e4062a0f980e1bc9df47f8645854a" args="(const integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::nothrow_integer::nothrow_integer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> from an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>An existing integer.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00057">57</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a70c7b596f17102c6e292b8994dda76cc"></a><!-- doxytag: member="boost::xint::nothrow_integer::nothrow_integer" ref="a70c7b596f17102c6e292b8994dda76cc" args="(const std::string &str, size_t base=10)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::nothrow_integer::nothrow_integer </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em> = <code>10</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [explicit]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Create an integer from a string representation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>A string representation of a number. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base of the number, or <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">exceptions::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">exceptions::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This will convert a string representation of a number into an integer. See the description of the <a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">from_string</a> function for details on its behavior.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>This is the most common way to initialize values that are too large to fit into a native integral type.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00066">66</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab0e2e8c778ad3128a228418c46add112"></a><!-- doxytag: member="boost::xint::nothrow_integer::nothrow_integer" ref="ab0e2e8c778ad3128a228418c46add112" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::nothrow_integer::nothrow_integer </td>
+ <td>(</td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_integral< T > >::type * </td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_signed< T > >::type * </td>
+ <td class="paramname"> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Constructs a new <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> object with the value of the built-in signed integer passed to it.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>A number of type <code>T</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type of <code>n</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00266">266</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7f7d4d7c031c82eec324c3dafe74c9ad"></a><!-- doxytag: member="boost::xint::nothrow_integer::nothrow_integer" ref="a7f7d4d7c031c82eec324c3dafe74c9ad" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::nothrow_integer::nothrow_integer </td>
+ <td>(</td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_integral< T > >::type * </td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_unsigned< T > >::type * </td>
+ <td class="paramname"> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Constructs a new <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> object with the value of the built-in unsigned integer passed to it.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>A number of type <code>T</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type of <code>n</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00289">289</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a3351e2aacd5477008fd96bdf0c72d0b8"></a><!-- doxytag: member="boost::xint::nothrow_integer::_make_unique" ref="a3351e2aacd5477008fd96bdf0c72d0b8" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::nothrow_integer::_make_unique </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00203">203</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a405c535527d1ff631c7338a6d329c51d"></a><!-- doxytag: member="boost::xint::nothrow_integer::even" ref="a405c535527d1ff631c7338a6d329c51d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::nothrow_integer::even </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests the lowest bit of <code>*this</code> to determine evenness. <dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns <code>false</code> instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00087">87</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a06f1a0177446777e4e84dc0fc91d65b2"></a><!-- doxytag: member="boost::xint::nothrow_integer::hex_digits" ref="a06f1a0177446777e4e84dc0fc91d65b2" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::nothrow_integer::hex_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tells you roughly how large an integer is. <dl class="return"><dt><b>Returns:</b></dt><dd>The number of hexadecimal digits that would be required to encode <code>this</code>. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns zero instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00106">106</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1dd4d6157a77e2e1e13d2915661dce7d"></a><!-- doxytag: member="boost::xint::nothrow_integer::is_nan" ref="a1dd4d6157a77e2e1e13d2915661dce7d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::nothrow_integer::is_nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests <code>*this</code> for Not-a-Number. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is Not-a-Number, otherwise <code>false</code>.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nan.html">The Not-a-Number Value</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00120">120</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9a8d654139e4fb916f933d09c7238e10"></a><!-- doxytag: member="boost::xint::nothrow_integer::nan" ref="a9a8d654139e4fb916f933d09c7238e10" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00194">194</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a39c446f247f63fbad9c4a205a1fbcc74"></a><!-- doxytag: member="boost::xint::nothrow_integer::odd" ref="a39c446f247f63fbad9c4a205a1fbcc74" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::nothrow_integer::odd </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests the lowest bit of <code>*this</code> to determine oddness. <dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns <code>false</code> instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00078">78</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1487576980f14a9011d76dab4d7bcb50"></a><!-- doxytag: member="boost::xint::nothrow_integer::one" ref="a1487576980f14a9011d76dab4d7bcb50" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::one </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00189">189</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0193f6d340643c9d33517bc053f3d6c7"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator%=" ref="a0193f6d340643c9d33517bc053f3d6c7" args="(const nothrow_integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator%= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00153">153</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6d644e1792f821acd8d4b9dfe9aa557e"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator&=" ref="a6d644e1792f821acd8d4b9dfe9aa557e" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator&= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00162">162</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a13e53eb7d7eaff28e52675aed5ee42f1"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator*=" ref="a13e53eb7d7eaff28e52675aed5ee42f1" args="(const nothrow_integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator*= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00151">151</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adf0e88fe1177733ae70496aa1a53a14d"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator++" ref="adf0e88fe1177733ae70496aa1a53a14d" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_integer::operator++ </td>
+ <td>(</td>
+ <td class="paramtype">int </td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postincrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00157">157</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab202967205b2a52063c2ac19647239bc"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator++" ref="ab202967205b2a52063c2ac19647239bc" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator++ </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Preincrement operator </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00155">155</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a80ef0930d8b99b324d01bb27efe709f9"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator+=" ref="a80ef0930d8b99b324d01bb27efe709f9" args="(const nothrow_integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator+= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00124">124</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="added2905dcd5b61db7fc6672831fc4eb"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator--" ref="added2905dcd5b61db7fc6672831fc4eb" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_integer::operator-- </td>
+ <td>(</td>
+ <td class="paramtype">int </td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postdecrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00158">158</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a19758953082fe86fdc13e4bef45fc6b6"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator--" ref="a19758953082fe86fdc13e4bef45fc6b6" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator-- </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Predecrement operator </p>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00156">156</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aee5d502fc0045ceaf4abee175c6d4f69"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator-=" ref="aee5d502fc0045ceaf4abee175c6d4f69" args="(const nothrow_integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator-= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00133">133</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a04f5934d995a7ca8d0c6bf0d0b2cfdda"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator/=" ref="a04f5934d995a7ca8d0c6bf0d0b2cfdda" args="(const nothrow_integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator/= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00152">152</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a616a917ad4877d96ed634dd502efecb8"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator<<" ref="a616a917ad4877d96ed634dd502efecb8" args="(size_t shift) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_integer::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00160">160</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeddbf6a9232a10643c8bfb53576393ee"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator<<=" ref="aeddbf6a9232a10643c8bfb53576393ee" args="(size_t shift)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator<<= </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00166">166</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d0c877ae53afb89d00c021f10dce67a"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator=" ref="a8d0c877ae53afb89d00c021f10dce67a" args="(const nothrow_integer &c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>c</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00142">142</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6eb932be75bcc68ca4fca3845c811f87"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator>>" ref="a6eb932be75bcc68ca4fca3845c811f87" args="(size_t shift) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_integer::operator>> </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00161">161</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeb282d877481f9b21e1a9d1d1e6a1044"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator>>=" ref="aeb282d877481f9b21e1a9d1d1e6a1044" args="(size_t shift)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator>>= </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00175">175</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aab4b0f9c0ffeb93f68185a6ae4a98986"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator^=" ref="aab4b0f9c0ffeb93f68185a6ae4a98986" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator^= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00164">164</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0d005b0e98ea4a078d6c471217c07a24"></a><!-- doxytag: member="boost::xint::nothrow_integer::operator|=" ref="a0d005b0e98ea4a078d6c471217c07a24" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::operator|= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00163">163</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a76bc6cf5315c6b7ee6083f28acfa7ddf"></a><!-- doxytag: member="boost::xint::nothrow_integer::sign" ref="a76bc6cf5315c6b7ee6083f28acfa7ddf" args="(bool signed_zero=false) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::nothrow_integer::sign </td>
+ <td>(</td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>signed_zero</em> = <code>false</code></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests the sign of <code>*this</code>. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>signed_zero</em> </td><td>If <code>false</code> (the default value), returns zero if <code>*this</code> is zero. If <code>true</code>, returns 1 or -1 on a zero <code>*this</code> as well. Primarily used to identify a <a class="el" href="zero.html">negative zero</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if <code>*this</code> is negative, 0 if it's zero, or 1 if it's greater than zero. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns zero instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00096">96</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2b3241400b0691fa5bd612358b48ccdd"></a><!-- doxytag: member="boost::xint::nothrow_integer::zero" ref="a2b3241400b0691fa5bd612358b48ccdd" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::nothrow_integer::zero </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8cpp_source.html#l00184">184</a> of file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a></li>
+<li><a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1nothrow__integer.png
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -39,7 +39,7 @@
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a>()</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a>()</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -51,10 +51,10 @@
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A convenience class for cryptographically-secure random numbers. </p>
-<p>Used with <a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> to set the XInt library to use the system-supplied secure random number generator.</p>
+<p>Used with <a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> to set the XInt library to use the system-supplied strong random number generator.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd></dl>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00602">602</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00035">35</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="afb7490db5d65e0998290663ab7f5e688"></a><!-- doxytag: member="boost::xint::strong_random_generator::result_type" ref="afb7490db5d65e0998290663ab7f5e688" args="" -->
<div class="memitem">
@@ -67,7 +67,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00604">604</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00037">37</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -87,7 +87,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="random_8cpp_source.html#l00169">169</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8cpp_source.html#l00160">160</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
</div>
</div>
@@ -106,7 +106,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="random_8cpp_source.html#l00170">170</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8cpp_source.html#l00161">161</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
</div>
</div>
@@ -177,7 +177,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="random_8cpp_source.html#l00171">171</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8cpp_source.html#l00162">162</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
</div>
</div>
@@ -193,7 +193,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00610">610</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00043">43</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -210,7 +210,7 @@
<b>Initial value:</b><div class="fragment"><pre class="fragment">
(std::numeric_limits<impl_t::result_type>::max)()
</pre></div>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00612">612</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00045">45</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -227,16 +227,16 @@
<b>Initial value:</b><div class="fragment"><pre class="fragment">
(std::numeric_limits<impl_t::result_type>::min)()
</pre></div>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00611">611</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00044">44</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="random_8hpp_source.html">random.hpp</a></li>
<li><a class="el" href="random_8cpp_source.html">random.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/classes.html
==============================================================================
--- sandbox/xint/doc/classes.html (original)
+++ sandbox/xint/doc/classes.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,21 +27,20 @@
</div>
</div>
<div class="contents">
-<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a></div>
+<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a></div>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> B </div></td></tr></table>
-</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1overflow__error.html">overflow_error</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a>) </td><td><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">divide_by_zero</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">invalid_modulus</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Q </div></td></tr></table>
-</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
+</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">invalid_digit</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">numeric_limits< boost::xint::integer ></a> (<a class="el" href="namespacestd.html">std</a>) </td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) &
nbsp; </td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">divide_by_zero</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">invalid_modulus</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">numeric_limits< boost::xint::nothrow_integer ></a> (<a class="el" href="namespacestd.html">std</a>) </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
</td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> N </div></td></tr></table>
-</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">data_t::QuickDigits</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table>
-</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
-</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a>) </td><td><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">no_strong_random</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table>
-</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">cannot_represent</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a>) </td><td><a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a> (<a
class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
-</td><td><a class="el" href="classboost_1_1xint_1_1invalid__base.html">invalid_base</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
-</td></tr></table><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a></div>
+</td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
+</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
+</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">no_strong_random</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">overflow_error</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">cannot_represent</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">not_a_number</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table>
+</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">too_big</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
+</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">invalid_base</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>) </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr></table><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a></div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>std::numeric_limits< boost::xint::integer > Member List</h1>This is the complete list of members for <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">denorm_min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">digits</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">digits10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">epsilon</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">has_denorm</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">has_denorm_loss</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#afc2b5e56fb2057c2459180219491d930">has_infinity</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">has_quiet_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">has_signaling_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">infinity</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">is_bounded</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">is_exact</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa29c196c9fdae93c3c7ebc2bdcde118e">is_iec559</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">is_integer</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">is_modulo</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">is_signed</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">is_specialized</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">max</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">max_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">max_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">min_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">min_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">quiet_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">radix</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">round_error</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">round_style</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">signaling_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">tinyness_before</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">traps</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td><td><code> [static]</code></td></tr>
+</table></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,566 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: std::numeric_limits< boost::xint::integer > Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespacestd.html">std</a>::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">numeric_limits< boost::xint::integer ></a>
+ </div>
+</div>
+<div class="contents">
+<h1>std::numeric_limits< boost::xint::integer > Class Template Reference</h1><!-- doxytag: class="std::numeric_limits< boost::xint::integer >" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">min</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">max</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">epsilon</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">round_error</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">infinity</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">quiet_NaN</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">signaling_NaN</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">denorm_min</a> () throw ()</td></tr>
+<tr><td colspan="2"><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">is_specialized</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">digits</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">digits10</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">is_signed</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">is_integer</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">is_exact</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">radix</a> = 2</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">min_exponent</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">min_exponent10</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">max_exponent</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">max_exponent10</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#afc2b5e56fb2057c2459180219491d930">has_infinity</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">has_quiet_NaN</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">has_signaling_NaN</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const float_denorm_style </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">has_denorm</a> = denorm_absent</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">has_denorm_loss</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa29c196c9fdae93c3c7ebc2bdcde118e">is_iec559</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">is_bounded</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">is_modulo</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">traps</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">tinyness_before</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const float_round_style </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">round_style</a> = round_indeterminate</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<><br/>
+ class std::numeric_limits< boost::xint::integer ></h3>
+
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00394">394</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aa0ce0042cd4a473feaf0efbe3bb6d3d7"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::denorm_min" ref="aa0ce0042cd4a473feaf0efbe3bb6d3d7" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::denorm_min </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00424">424</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8cb7f699b54712581184f3486fe23ecd"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::epsilon" ref="a8cb7f699b54712581184f3486fe23ecd" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::epsilon </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00407">407</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa26e13fe18d53c4345611e4939c1bd08"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::infinity" ref="aa26e13fe18d53c4345611e4939c1bd08" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::infinity </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00421">421</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a61b48d9ed6de684cd6f848e0c51a8350"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::max" ref="a61b48d9ed6de684cd6f848e0c51a8350" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::max </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00399">399</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abe602c2142a3f18efad7ee6165e6ae35"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::min" ref="abe602c2142a3f18efad7ee6165e6ae35" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::min </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00398">398</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7bc02a7f92402e24f127babd46845b38"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::quiet_NaN" ref="a7bc02a7f92402e24f127babd46845b38" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::quiet_NaN </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00422">422</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0cde53b5ca1063e2fbfd9c9e6f0866bc"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::round_error" ref="a0cde53b5ca1063e2fbfd9c9e6f0866bc" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::round_error </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00408">408</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5b2267da5707a0345f04d962742a4de0"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::signaling_NaN" ref="a5b2267da5707a0345f04d962742a4de0" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::signaling_NaN </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00423">423</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="ad2b6d99afd7e533fe7bb39675c50f4d8"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::digits" ref="ad2b6d99afd7e533fe7bb39675c50f4d8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">digits</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00401">401</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a59c21d55527213fb2638618f986a5a23"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::digits10" ref="a59c21d55527213fb2638618f986a5a23" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">digits10</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00402">402</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af6ad8de5f9785bce47d09baa074f209a"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::has_denorm" ref="af6ad8de5f9785bce47d09baa074f209a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float_denorm_style std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">has_denorm</a> = denorm_absent<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00418">418</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a16c5bbfdae90e62a46d9d604a615d071"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::has_denorm_loss" ref="a16c5bbfdae90e62a46d9d604a615d071" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">has_denorm_loss</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00419">419</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afc2b5e56fb2057c2459180219491d930"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::has_infinity" ref="afc2b5e56fb2057c2459180219491d930" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#afc2b5e56fb2057c2459180219491d930">has_infinity</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00415">415</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4349ec37234b540226385641b57849c4"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::has_quiet_NaN" ref="a4349ec37234b540226385641b57849c4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">has_quiet_NaN</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00416">416</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaa2f2d54b32c5c675a012b64d5b03302"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::has_signaling_NaN" ref="aaa2f2d54b32c5c675a012b64d5b03302" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">has_signaling_NaN</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00417">417</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaa3d9b178e56460ba4701baf6044a6e1"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::is_bounded" ref="aaa3d9b178e56460ba4701baf6044a6e1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">is_bounded</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00427">427</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af14e06e3d92f0642f1936ed2f789fe62"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::is_exact" ref="af14e06e3d92f0642f1936ed2f789fe62" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">is_exact</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00405">405</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa29c196c9fdae93c3c7ebc2bdcde118e"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::is_iec559" ref="aa29c196c9fdae93c3c7ebc2bdcde118e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa29c196c9fdae93c3c7ebc2bdcde118e">is_iec559</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00426">426</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0a0ca82b32be38bd2b1129678c29a367"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::is_integer" ref="a0a0ca82b32be38bd2b1129678c29a367" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">is_integer</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00404">404</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a88b83cf94dbe0c5d665c0da31384373b"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::is_modulo" ref="a88b83cf94dbe0c5d665c0da31384373b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">is_modulo</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00428">428</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab805f71787e27a6a760a1158eed67604"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::is_signed" ref="ab805f71787e27a6a760a1158eed67604" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">is_signed</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00403">403</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a797b5572e1defb2e54824d8f93757b70"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::is_specialized" ref="a797b5572e1defb2e54824d8f93757b70" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">is_specialized</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00396">396</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a552090a8e12558fd5514176fb8b203c3"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::max_exponent" ref="a552090a8e12558fd5514176fb8b203c3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">max_exponent</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00412">412</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abcd8e2fb1e04a51fc5747603515cf497"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::max_exponent10" ref="abcd8e2fb1e04a51fc5747603515cf497" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">max_exponent10</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00413">413</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad0d8fd556c393bf63f2525a4a494fcf7"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::min_exponent" ref="ad0d8fd556c393bf63f2525a4a494fcf7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">min_exponent</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00410">410</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b75c7ee1e29fdfc3a8d51386ed4389d"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::min_exponent10" ref="a8b75c7ee1e29fdfc3a8d51386ed4389d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">min_exponent10</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00411">411</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a14cba561a014bdaad371f21e8471e9f6"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::radix" ref="a14cba561a014bdaad371f21e8471e9f6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">radix</a> = 2<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00406">406</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8bb32df27ec29cc90e46adb78df8c4c2"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::round_style" ref="a8bb32df27ec29cc90e46adb78df8c4c2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float_round_style std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">round_style</a> = round_indeterminate<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00432">432</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6f43a2e1dcba42a7cf73a1a4323ed931"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::tinyness_before" ref="a6f43a2e1dcba42a7cf73a1a4323ed931" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">tinyness_before</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00431">431</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad469dddd16a7ba6fed9e88c969a5faa6"></a><!-- doxytag: member="std::numeric_limits< boost::xint::integer >::traps" ref="ad469dddd16a7ba6fed9e88c969a5faa6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">traps</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00430">430</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="integer_8hpp_source.html">integer.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>std::numeric_limits< boost::xint::nothrow_integer > Member List</h1>This is the complete list of members for <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">denorm_min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">digits</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">digits10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">epsilon</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">has_denorm</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">has_denorm_loss</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">has_infinity</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">has_quiet_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">has_signaling_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">infinity</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">is_bounded</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">is_exact</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">is_iec559</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">is_integer</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">is_modulo</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">is_signed</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">is_specialized</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">max</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">max_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">max_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae0fa48cc50faee763bb27126f48fd16c">min_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">min_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">quiet_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">radix</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">round_error</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6e305ad6c75f38d0d0ba4aa15865845d">round_style</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">signaling_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">tinyness_before</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">traps</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td><td><code> [static]</code></td></tr>
+</table></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,566 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: std::numeric_limits< boost::xint::nothrow_integer > Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespacestd.html">std</a>::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">numeric_limits< boost::xint::nothrow_integer ></a>
+ </div>
+</div>
+<div class="contents">
+<h1>std::numeric_limits< boost::xint::nothrow_integer > Class Template Reference</h1><!-- doxytag: class="std::numeric_limits< boost::xint::nothrow_integer >" -->
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">min</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">max</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">epsilon</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">round_error</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">infinity</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">quiet_NaN</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">signaling_NaN</a> () throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">denorm_min</a> () throw ()</td></tr>
+<tr><td colspan="2"><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">is_specialized</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">digits</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">digits10</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">is_signed</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">is_integer</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">is_exact</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">radix</a> = 2</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae0fa48cc50faee763bb27126f48fd16c">min_exponent</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">min_exponent10</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">max_exponent</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">max_exponent10</a> = 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">has_infinity</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">has_quiet_NaN</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">has_signaling_NaN</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const float_denorm_style </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">has_denorm</a> = denorm_absent</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">has_denorm_loss</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">is_iec559</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">is_bounded</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">is_modulo</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">traps</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">tinyness_before</a> = false</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const float_round_style </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6e305ad6c75f38d0d0ba4aa15865845d">round_style</a> = round_indeterminate</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<><br/>
+ class std::numeric_limits< boost::xint::nothrow_integer ></h3>
+
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00355">355</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aab4e0d9304ec3163dd04c2f1fd51f0a0"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::denorm_min" ref="aab4e0d9304ec3163dd04c2f1fd51f0a0" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::denorm_min </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00386">386</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1e2dbe9a0e93d417475413d5547c504d"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::epsilon" ref="a1e2dbe9a0e93d417475413d5547c504d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::epsilon </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00368">368</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeb5447260ec78f94e2979ca91081f3d0"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::infinity" ref="aeb5447260ec78f94e2979ca91081f3d0" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::infinity </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00382">382</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae393a1460b35b321eb0911061ba2d877"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::max" ref="ae393a1460b35b321eb0911061ba2d877" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::max </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00360">360</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5c9ca5145dc7b0020c7d8a59a2200af4"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::min" ref="a5c9ca5145dc7b0020c7d8a59a2200af4" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::min </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00359">359</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a13e8fdc53c49a6965fb9009a0bc39fab"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::quiet_NaN" ref="a13e8fdc53c49a6965fb9009a0bc39fab" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::quiet_NaN </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00383">383</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8a38a58bba31aa9ea9815b957525b650"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::round_error" ref="a8a38a58bba31aa9ea9815b957525b650" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::round_error </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00369">369</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaa6da5c0db199ca584a2ee47d0796476"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::signaling_NaN" ref="aaa6da5c0db199ca584a2ee47d0796476" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::signaling_NaN </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> throw ()<code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00385">385</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="a8db85ce6bfd29378cd5b054ffa9dcc73"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::digits" ref="a8db85ce6bfd29378cd5b054ffa9dcc73" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">digits</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00362">362</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a635a92c394110e24ad5446906d32dbac"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::digits10" ref="a635a92c394110e24ad5446906d32dbac" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">digits10</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00363">363</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8eb59688fd79c9928927d524d7c700c4"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::has_denorm" ref="a8eb59688fd79c9928927d524d7c700c4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float_denorm_style std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">has_denorm</a> = denorm_absent<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00379">379</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="addb4eee85c09f7e5395e67c918671d05"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::has_denorm_loss" ref="addb4eee85c09f7e5395e67c918671d05" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">has_denorm_loss</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00380">380</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af2f45b256a4e7ad9f6304e0f743400ec"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::has_infinity" ref="af2f45b256a4e7ad9f6304e0f743400ec" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">has_infinity</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00376">376</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aae261d33d81d7ce984a045e96b46f962"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::has_quiet_NaN" ref="aae261d33d81d7ce984a045e96b46f962" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">has_quiet_NaN</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00377">377</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a49ff05bed05568f4a4ddf0b3d25e5980"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::has_signaling_NaN" ref="a49ff05bed05568f4a4ddf0b3d25e5980" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">has_signaling_NaN</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00378">378</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a53d8df36b3487d8eb3e923c6729edf21"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::is_bounded" ref="a53d8df36b3487d8eb3e923c6729edf21" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">is_bounded</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00389">389</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7349047386bb539ab5a714b5864f8b2b"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::is_exact" ref="a7349047386bb539ab5a714b5864f8b2b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">is_exact</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00366">366</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abea02c5396ab75990b17946fb8e9aa9b"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::is_iec559" ref="abea02c5396ab75990b17946fb8e9aa9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">is_iec559</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00388">388</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab6e1b183e5175d71bf9e4d6df54aef0a"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::is_integer" ref="ab6e1b183e5175d71bf9e4d6df54aef0a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">is_integer</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00365">365</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3a65bc9e353e0a09aeb1b35384d65f40"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::is_modulo" ref="a3a65bc9e353e0a09aeb1b35384d65f40" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">is_modulo</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00390">390</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a54b78ebfa3ddfc7b348487936aca5a69"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::is_signed" ref="a54b78ebfa3ddfc7b348487936aca5a69" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">is_signed</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00364">364</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad75c31bcf281bc3d61fcaa86f5d637a4"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::is_specialized" ref="ad75c31bcf281bc3d61fcaa86f5d637a4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">is_specialized</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00357">357</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5159625bece286f452e9b2b86e94b8d5"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::max_exponent" ref="a5159625bece286f452e9b2b86e94b8d5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">max_exponent</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00373">373</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6a63de06c48db492872f44521d52d300"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::max_exponent10" ref="a6a63de06c48db492872f44521d52d300" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">max_exponent10</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00374">374</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae0fa48cc50faee763bb27126f48fd16c"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::min_exponent" ref="ae0fa48cc50faee763bb27126f48fd16c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae0fa48cc50faee763bb27126f48fd16c">min_exponent</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00371">371</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aede69004d06de1fcf6a0a4d7fc601a5d"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::min_exponent10" ref="aede69004d06de1fcf6a0a4d7fc601a5d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">min_exponent10</a> = 0<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00372">372</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adae12b63475b14d19128eee60c665c5c"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::radix" ref="adae12b63475b14d19128eee60c665c5c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">radix</a> = 2<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00367">367</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6e305ad6c75f38d0d0ba4aa15865845d"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::round_style" ref="a6e305ad6c75f38d0d0ba4aa15865845d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float_round_style std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6e305ad6c75f38d0d0ba4aa15865845d">round_style</a> = round_indeterminate<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00394">394</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2cb05a6ce2f537c0be893bb3260fb186"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::tinyness_before" ref="a2cb05a6ce2f537c0be893bb3260fb186" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">tinyness_before</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00393">393</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9d18eb71d6bad51653de3f58f62d5f47"></a><!-- doxytag: member="std::numeric_limits< boost::xint::nothrow_integer >::traps" ref="a9d18eb71d6bad51653de3f58f62d5f47" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool std::numeric_limits< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a> >::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">traps</a> = false<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00392">392</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Modified: sandbox/xint/doc/compare_8cpp.html
==============================================================================
--- sandbox/xint/doc/compare_8cpp.html (original)
+++ sandbox/xint/doc/compare_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,37 +36,32 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core::operator!</a> (const integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core::operator==</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core::operator<</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core::operator></a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the the compare function and comparison operators. </p>
<p>Definition in file <a class="el" href="compare_8cpp_source.html">compare.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/compare_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/compare_8cpp_source.html (original)
+++ sandbox/xint/doc/compare_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,62 +38,54 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <functional></span>
-<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>core {
-<a name="l00026"></a>00026
-<a name="l00039"></a>00039 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> integer &b1, <span class="keyword">const</span> integer &b2, <span class="keywordtype">bool</span> ignoresign) {
-<a name="l00040"></a>00040 <span class="keywordflow">if</span> (!ignoresign) {
-<a name="l00041"></a>00041 <span class="keywordtype">int</span> sign1=b1.sign(), sign2=b2.sign();
-<a name="l00042"></a>00042 <span class="keywordflow">if</span> (sign1==0 && sign2==0) <span class="keywordflow">return</span> 0;
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> -sign2;
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> sign1;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (sign1 != sign2) <span class="keywordflow">return</span> sign1;
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (sign1 < 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(-b2, -b1, ignoresign);
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">const</span> detail::data_t *b1data=b1._get_data();
-<a name="l00051"></a>00051 <span class="keyword">const</span> detail::data_t *b2data=b2._get_data();
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordtype">int</span> answer=0;
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (b1data->mLength != b2data->mLength) {
-<a name="l00055"></a>00055 answer=((b1data->mLength < b2data->mLength) ? -1 : 1);
-<a name="l00056"></a>00056 } <span class="keywordflow">else</span> {
-<a name="l00057"></a>00057 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = <span class="keywordtype">int</span>(b1data->mLength) - 1; x >= 0; --x) {
-<a name="l00058"></a>00058 <span class="keywordflow">if</span> (b1data->digits[x] != b2data->digits[x]) {
-<a name="l00059"></a>00059 answer=((b1data->digits[x] < b2data->digits[x]) ? -1 : 1);
-<a name="l00060"></a>00060 <span class="keywordflow">break</span>;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keywordflow">return</span> answer;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">operator!</a>(<span class="keyword">const</span> integer &num1) { <span class="keywordflow">return</span> num1.sign()==0; }
-<a name="l00069"></a>00069 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">operator==</a>(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2) {
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)==0; }
-<a name="l00071"></a>00071 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">operator!=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)!=0; }
-<a name="l00073"></a>00073 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">operator<</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00074"></a>00074 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)<0; }
-<a name="l00075"></a>00075 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator></a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)>0; }
-<a name="l00077"></a>00077 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator<=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00078"></a>00078 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)<=0; }
-<a name="l00079"></a>00079 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator>=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)>=0; }
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 } <span class="comment">// namespace core</span>
-<a name="l00083"></a>00083 } <span class="comment">// namespace xint</span>
-<a name="l00084"></a>00084 } <span class="comment">// namespace boost</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <functional></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00036"></a>00036 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> integer &b1, <span class="keyword">const</span> integer &b2, <span class="keywordtype">bool</span> ignoresign) {
+<a name="l00037"></a>00037 <span class="keywordflow">if</span> (!ignoresign) {
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> sign1=b1.sign(), sign2=b2.sign();
+<a name="l00039"></a>00039 <span class="keywordflow">if</span> (sign1==0 && sign2==0) <span class="keywordflow">return</span> 0;
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> -sign2;
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> sign1;
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (sign1 != sign2) <span class="keywordflow">return</span> sign1;
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (sign1 < 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(-b2, -b1, ignoresign);
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="keywordflow">if</span> (b1._get_length() != b2._get_length()) {
+<a name="l00048"></a>00048 <span class="keywordflow">return</span> ((b1._get_length() < b2._get_length()) ? -1 : 1);
+<a name="l00049"></a>00049 } <span class="keywordflow">else</span> {
+<a name="l00050"></a>00050 <span class="keywordtype">size_t</span> len=b1._get_length();
+<a name="l00051"></a>00051 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> *b1d=b1._get_digits(), *b1i=b1d+len;
+<a name="l00052"></a>00052 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> *b2d=b2._get_digits(), *b2i=b2d+len;
+<a name="l00053"></a>00053 <span class="keywordflow">while</span> (b1i > b1d)
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (*(--b1i) != *(--b2i))
+<a name="l00055"></a>00055 <span class="keywordflow">return</span> ((*b1i < *b2i) ? -1 : 1);
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> 0;
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(<span class="keyword">const</span> integer &num1) { <span class="keywordflow">return</span> num1.sign()==0; }
+<a name="l00062"></a>00062 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a>(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2) {
+<a name="l00063"></a>00063 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(num1, num2)==0; }
+<a name="l00064"></a>00064 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(num1, num2)!=0; }
+<a name="l00066"></a>00066 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(num1, num2)<0; }
+<a name="l00068"></a>00068 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(num1, num2)>0; }
+<a name="l00070"></a>00070 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00071"></a>00071 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(num1, num2)<=0; }
+<a name="l00072"></a>00072 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(num1, num2)>=0; }
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 } <span class="comment">// namespace xint</span>
+<a name="l00076"></a>00076 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/convert_8cpp.html
==============================================================================
--- sandbox/xint/doc/convert_8cpp.html (original)
+++ sandbox/xint/doc/convert_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,26 +36,21 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core::from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core::from_binary</a> (const std::string &str)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core::to_binary</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an integer, lowest byte first. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">boost::xint::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint::from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">boost::xint::to_binary</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an integer, lowest byte first. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the conversion functions. </p>
@@ -64,7 +59,7 @@
<p>Definition in file <a class="el" href="convert_8cpp_source.html">convert.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/convert_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/convert_8cpp_source.html (original)
+++ sandbox/xint/doc/convert_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,165 +38,159 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00026"></a>00026 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="preprocessor">#include <vector></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <algorithm></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <sstream></span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>boost {
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>xint {
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">using namespace </span>detail;
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>{
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keywordtype">char</span> nToChar(<span class="keywordtype">int</span> n, <span class="keywordtype">bool</span> upperCase) {
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (n < 10) <span class="keywordflow">return</span> char(n+<span class="charliteral">'0'</span>);
-<a name="l00042"></a>00042 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (upperCase) <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'A'</span>);
-<a name="l00043"></a>00043 <span class="keywordflow">else</span> <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'a'</span>);
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 } <span class="comment">// namespace</span>
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keyword">namespace </span>core {
-<a name="l00049"></a>00049
-<a name="l00068"></a>00068 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (base<2 || base>36) <span class="keywordflow">throw</span> invalid_base();
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (n.sign()==0) <span class="keywordflow">return</span> <span class="stringliteral">"0"</span>;
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 std::ostringstream out;
-<a name="l00074"></a>00074 <span class="keywordflow">if</span> (base==16) {
-<a name="l00075"></a>00075 <span class="comment">// Special no-division version, primarily for debugging division</span>
-<a name="l00076"></a>00076 <span class="keyword">const</span> data_t *ndata=n._get_data();
-<a name="l00077"></a>00077 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *firstDigit=ndata->digits,
-<a name="l00078"></a>00078 *lastDigit=firstDigit + ndata->mLength - 1;
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="keyword">const</span> <span class="keywordtype">int</span> bitsPerDigit=4;
-<a name="l00081"></a>00081 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << bitsPerDigit)-1;
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="comment">// Suppress any leading zeros</span>
-<a name="l00084"></a>00084 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=lastDigit;
-<a name="l00085"></a>00085 <span class="keywordtype">int</span> digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
-<a name="l00086"></a>00086 <span class="keywordflow">while</span> (digitShift >= 0 && ((*d >> digitShift) & mask) == 0)
-<a name="l00087"></a>00087 digitShift -= bitsPerDigit;
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keywordflow">do</span> {
-<a name="l00090"></a>00090 <span class="keywordflow">while</span> (digitShift >= 0) {
-<a name="l00091"></a>00091 out << nToChar((*d >> digitShift) & mask, uppercase);
-<a name="l00092"></a>00092 digitShift -= bitsPerDigit;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
-<a name="l00096"></a>00096 } <span class="keywordflow">while</span> (d-- != firstDigit);
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 std::string r(n.sign() < 0 ? std::string(<span class="stringliteral">"-"</span>)+out.str() : out.str());
-<a name="l00099"></a>00099 <span class="keywordflow">return</span> r;
-<a name="l00100"></a>00100 } <span class="keywordflow">else</span> {
-<a name="l00101"></a>00101 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>=base;
-<a name="l00102"></a>00102 std::pair<integer, integer> a=std::make_pair(n, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>());
-<a name="l00103"></a>00103 a.first._set_negative(<span class="keyword">false</span>);
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 integer r;
-<a name="l00106"></a>00106 <span class="keywordflow">while</span> (a.first.sign()!=0) {
-<a name="l00107"></a>00107 a=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(a.first, shift);
-<a name="l00108"></a>00108 out << nToChar(a.second._get_digit(0), uppercase);
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (n.sign() < 0) out << <span class="charliteral">'-'</span>;
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 std::string rval=out.str();
-<a name="l00114"></a>00114 std::reverse(rval.begin(), rval.end());
-<a name="l00115"></a>00115 <span class="keywordflow">return</span> rval;
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00145"></a>00145 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
-<a name="l00146"></a>00146 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>=<span class="keyword">false</span>;
-<a name="l00147"></a>00147 <span class="keyword">const</span> <span class="keywordtype">char</span> *c=str.c_str();
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (*c==<span class="charliteral">'+'</span>) ++c;
-<a name="l00149"></a>00149 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">'-'</span>) { negate=<span class="keyword">true</span>; ++c; }
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (*c==<span class="charliteral">'0'</span>) {
-<a name="l00153"></a>00153 ++c;
-<a name="l00154"></a>00154 <span class="keywordflow">if</span> (*c==<span class="charliteral">'x'</span> || *c==<span class="charliteral">'X'</span>) {
-<a name="l00155"></a>00155 ++c;
-<a name="l00156"></a>00156 base=16;
-<a name="l00157"></a>00157 } <span class="keywordflow">else</span> base=8;
-<a name="l00158"></a>00158 } <span class="keywordflow">else</span> base=10;
-<a name="l00159"></a>00159 }
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <algorithm></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <sstream></span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="keyword">namespace </span>boost {
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>xint {
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keyword">using namespace </span>detail;
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">namespace </span>{
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keywordtype">char</span> nToChar(<span class="keywordtype">int</span> n, <span class="keywordtype">bool</span> upperCase) {
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (n < 10) <span class="keywordflow">return</span> char(n+<span class="charliteral">'0'</span>);
+<a name="l00041"></a>00041 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (upperCase) <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'A'</span>);
+<a name="l00042"></a>00042 <span class="keywordflow">else</span> <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'a'</span>);
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 } <span class="comment">// namespace</span>
+<a name="l00046"></a>00046
+<a name="l00064"></a>00064 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
+<a name="l00065"></a>00065 <span class="keywordflow">if</span> (base<2 || base>36) <span class="keywordflow">throw</span> exceptions::invalid_base();
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (n.sign()==0) <span class="keywordflow">return</span> <span class="stringliteral">"0"</span>;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 std::ostringstream out;
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (base==16) {
+<a name="l00071"></a>00071 <span class="comment">// Special no-division version, primarily for debugging division</span>
+<a name="l00072"></a>00072 <span class="comment">//const data_t *ndata=n._get_data();</span>
+<a name="l00073"></a>00073 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *firstDigit=n._get_digits(),
+<a name="l00074"></a>00074 *lastDigit=firstDigit + n._get_length() - 1;
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">const</span> <span class="keywordtype">int</span> bitsPerDigit=4;
+<a name="l00077"></a>00077 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << bitsPerDigit)-1;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="comment">// Suppress any leading zeros</span>
+<a name="l00080"></a>00080 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=lastDigit;
+<a name="l00081"></a>00081 <span class="keywordtype">int</span> digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
+<a name="l00082"></a>00082 <span class="keywordflow">while</span> (digitShift >= 0 && ((*d >> digitShift) & mask) == 0)
+<a name="l00083"></a>00083 digitShift -= bitsPerDigit;
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <span class="keywordflow">do</span> {
+<a name="l00086"></a>00086 <span class="keywordflow">while</span> (digitShift >= 0) {
+<a name="l00087"></a>00087 out << nToChar((*d >> digitShift) & mask, uppercase);
+<a name="l00088"></a>00088 digitShift -= bitsPerDigit;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
+<a name="l00092"></a>00092 } <span class="keywordflow">while</span> (d-- != firstDigit);
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 std::string r(n.sign() < 0 ? std::string(<span class="stringliteral">"-"</span>)+out.str() : out.str());
+<a name="l00095"></a>00095 <span class="keywordflow">return</span> r;
+<a name="l00096"></a>00096 } <span class="keywordflow">else</span> {
+<a name="l00097"></a>00097 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>=base;
+<a name="l00098"></a>00098 std::pair<integer, integer> a=std::make_pair(n, <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>());
+<a name="l00099"></a>00099 a.first._set_negative(<span class="keyword">false</span>);
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 integer r;
+<a name="l00102"></a>00102 <span class="keywordflow">while</span> (a.first.sign()!=0) {
+<a name="l00103"></a>00103 a=<a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(a.first, shift);
+<a name="l00104"></a>00104 out << nToChar(a.second._get_digit(0), uppercase);
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keywordflow">if</span> (n.sign() < 0) out << <span class="charliteral">'-'</span>;
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 std::string rval=out.str();
+<a name="l00110"></a>00110 std::reverse(rval.begin(), rval.end());
+<a name="l00111"></a>00111 <span class="keywordflow">return</span> rval;
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114
+<a name="l00140"></a>00140 integer <a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00141"></a>00141 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>=<span class="keyword">false</span>;
+<a name="l00142"></a>00142 <span class="keyword">const</span> <span class="keywordtype">char</span> *c=str.c_str();
+<a name="l00143"></a>00143 <span class="keywordflow">if</span> (*c==<span class="charliteral">'+'</span>) ++c;
+<a name="l00144"></a>00144 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">'-'</span>) { negate=<span class="keyword">true</span>; ++c; }
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (*c==<span class="charliteral">'0'</span>) {
+<a name="l00148"></a>00148 ++c;
+<a name="l00149"></a>00149 <span class="keywordflow">if</span> (*c==<span class="charliteral">'x'</span> || *c==<span class="charliteral">'X'</span>) {
+<a name="l00150"></a>00150 ++c;
+<a name="l00151"></a>00151 base=16;
+<a name="l00152"></a>00152 } <span class="keywordflow">else</span> base=8;
+<a name="l00153"></a>00153 } <span class="keywordflow">else</span> base=10;
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (base<2 || base>36) <span class="keywordflow">throw</span> exceptions::invalid_base();
+<a name="l00157"></a>00157 <span class="keywordflow">if</span> (*c==0) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">"No valid digits"</span>);
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(base);
<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (base<2 || base>36) <span class="keywordflow">throw</span> invalid_base();
-<a name="l00162"></a>00162 <span class="keywordflow">if</span> (*c==0) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"No valid digits"</span>);
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>(base);
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 integer r;
-<a name="l00167"></a>00167 <span class="keywordflow">while</span> (*c) {
-<a name="l00168"></a>00168 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digit;
-<a name="l00169"></a>00169 <span class="keywordflow">if</span> (*c>=<span class="charliteral">'0'</span> && *c<=<span class="charliteral">'9'</span>) digit=*c-<span class="charliteral">'0'</span>;
-<a name="l00170"></a>00170 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'A'</span> && *c<=<span class="charliteral">'Z'</span>) digit=*c-<span class="charliteral">'A'</span>+10;
-<a name="l00171"></a>00171 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'a'</span> && *c<=<span class="charliteral">'z'</span>) digit=*c-<span class="charliteral">'a'</span>+10;
-<a name="l00172"></a>00172 <span class="keywordflow">else</span> <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"encountered non-alphanumeric character in "</span>
-<a name="l00173"></a>00173 <span class="stringliteral">"string"</span>);
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (digit >= base) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"encountered digit greater than "</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"base allows"</span>);
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 r = (r * shift) + digit;
-<a name="l00179"></a>00179 ++c;
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 r._set_negative(negate);
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> r;
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184
-<a name="l00194"></a>00194 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string& str) {
-<a name="l00195"></a>00195 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
-<a name="l00196"></a>00196 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits<unsigned char>::digits;
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 integer r;
-<a name="l00199"></a>00199 detail::data_t *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00200"></a>00200 rdata->alloc((str.length() + bytesPerDigit - 1)/bytesPerDigit);
-<a name="l00201"></a>00201 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=rdata->digits;
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s=(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)str.data(), *se=s+str.length();
-<a name="l00204"></a>00204 <span class="keywordflow">while</span> (s<se) {
-<a name="l00205"></a>00205 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d=0;
-<a name="l00206"></a>00206 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<bytesPerDigit && s<se; ++i)
-<a name="l00207"></a>00207 d |= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(*s++) << (i * bitsPerByte));
-<a name="l00208"></a>00208 *p++=d;
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210 rdata->skipLeadingZeros();
-<a name="l00211"></a>00211 <span class="keywordflow">return</span> r;
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213
-<a name="l00233"></a>00233 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00234"></a>00234 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
-<a name="l00235"></a>00235 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits<unsigned char>::digits;
-<a name="l00236"></a>00236 std::vector<unsigned char> temp;
-<a name="l00237"></a>00237 temp.reserve(n._get_length() * bytesPerDigit);
-<a name="l00238"></a>00238
-<a name="l00239"></a>00239 <span class="keyword">const</span> detail::data_t *ndata=n._get_data();
-<a name="l00240"></a>00240 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata->digits, *pe=p+n._get_length();
-<a name="l00241"></a>00241 <span class="keywordflow">while</span> (p != pe) {
-<a name="l00242"></a>00242 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d(*p++);
-<a name="l00243"></a>00243 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<bytesPerDigit; ++i) {
-<a name="l00244"></a>00244 temp.push_back((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(d));
-<a name="l00245"></a>00245 d >>= bitsPerByte;
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 <span class="keywordflow">while</span> (!temp.empty() && temp.back()==0) temp.pop_back();
-<a name="l00249"></a>00249 <span class="keywordtype">char</span> *c=(<span class="keywordtype">char</span>*)&temp[0];
-<a name="l00250"></a>00250 <span class="keywordflow">return</span> std::string(c, c+temp.size());
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 } <span class="comment">// namespace core</span>
-<a name="l00254"></a>00254 } <span class="comment">// namespace xint</span>
-<a name="l00255"></a>00255 } <span class="comment">// namespace boost</span>
+<a name="l00161"></a>00161 integer r;
+<a name="l00162"></a>00162 <span class="keywordflow">while</span> (*c) {
+<a name="l00163"></a>00163 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digit;
+<a name="l00164"></a>00164 <span class="keywordflow">if</span> (*c>=<span class="charliteral">'0'</span> && *c<=<span class="charliteral">'9'</span>) digit=*c-<span class="charliteral">'0'</span>;
+<a name="l00165"></a>00165 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'A'</span> && *c<=<span class="charliteral">'Z'</span>) digit=*c-<span class="charliteral">'A'</span>+10;
+<a name="l00166"></a>00166 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'a'</span> && *c<=<span class="charliteral">'z'</span>) digit=*c-<span class="charliteral">'a'</span>+10;
+<a name="l00167"></a>00167 <span class="keywordflow">else</span> <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">"encountered non-alphanumeric "</span>
+<a name="l00168"></a>00168 <span class="stringliteral">"character in string"</span>);
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="keywordflow">if</span> (digit >= base) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">"encountered digit "</span>
+<a name="l00171"></a>00171 <span class="stringliteral">"greater than base allows"</span>);
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 r = (r * shift) + digit;
+<a name="l00174"></a>00174 ++c;
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176 r._set_negative(negate);
+<a name="l00177"></a>00177 <span class="keywordflow">return</span> r;
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179
+<a name="l00189"></a>00189 integer <a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string& str) {
+<a name="l00190"></a>00190 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
+<a name="l00191"></a>00191 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits<unsigned char>::digits;
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 integer r;
+<a name="l00194"></a>00194 r.<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a>((str.length() + bytesPerDigit - 1)/bytesPerDigit);
+<a name="l00195"></a>00195 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=r._get_digits();
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s=(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)str.data(), *se=s+str.length();
+<a name="l00198"></a>00198 <span class="keywordflow">while</span> (s<se) {
+<a name="l00199"></a>00199 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d=0;
+<a name="l00200"></a>00200 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<bytesPerDigit && s<se; ++i)
+<a name="l00201"></a>00201 d |= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(*s++) << (i * bitsPerByte));
+<a name="l00202"></a>00202 *p++=d;
+<a name="l00203"></a>00203 }
+<a name="l00204"></a>00204 r._cleanup();
+<a name="l00205"></a>00205 <span class="keywordflow">return</span> r;
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207
+<a name="l00224"></a>00224 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00225"></a>00225 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
+<a name="l00226"></a>00226 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits<unsigned char>::digits;
+<a name="l00227"></a>00227 std::vector<unsigned char> temp;
+<a name="l00228"></a>00228 temp.reserve(n._get_length() * bytesPerDigit);
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=n._get_digits(), *pe=p+n._get_length();
+<a name="l00231"></a>00231 <span class="keywordflow">while</span> (p != pe) {
+<a name="l00232"></a>00232 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d(*p++);
+<a name="l00233"></a>00233 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<bytesPerDigit; ++i) {
+<a name="l00234"></a>00234 temp.push_back((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(d));
+<a name="l00235"></a>00235 d >>= bitsPerByte;
+<a name="l00236"></a>00236 }
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 <span class="keywordflow">while</span> (!temp.empty() && temp.back()==0) temp.pop_back();
+<a name="l00239"></a>00239 <span class="keywordtype">char</span> *c=(<span class="keywordtype">char</span>*)&temp[0];
+<a name="l00240"></a>00240 <span class="keywordflow">return</span> std::string(c, c+temp.size());
+<a name="l00241"></a>00241 }
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 } <span class="comment">// namespace xint</span>
+<a name="l00244"></a>00244 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/copyonwrite_8dox.html
==============================================================================
--- sandbox/xint/doc/copyonwrite_8dox.html (original)
+++ sandbox/xint/doc/copyonwrite_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/copyonwrite.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/cow.html
==============================================================================
--- sandbox/xint/doc/cow.html (original)
+++ sandbox/xint/doc/cow.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -24,10 +24,10 @@
<div class="contents">
-<h1><a class="anchor" id="cow">Copying and Argument-Passing </a></h1><p>By default, the integer classes use copy-on-write, which means that if you copy an integer, the copy and the original share the same storage. They are only assigned separate storage when one of them is changed. This mechanism makes copying an integer (explicitly, by returning it, or by using it as a non-reference parameter to a function) very fast, regardless of its size.</p>
+<h1><a class="anchor" id="cow">Copying and Argument-Passing </a></h1><p>By default, the integer and nothrow_integer classes use copy-on-write, which means that if you copy one of them, the copy and the original share the same storage. They are only assigned separate storage when one of them is changed. This mechanism makes copying a number (explicitly, by returning it, or by using it as a non-reference parameter to a function) very fast, regardless of its size.</p>
<p>Unfortunately, this makes thread-safe operation impossible. If you need to use the library from multiple threads, you can disable this behavior by compiling it with <a class="el" href="threadsafe.html">the thread-safe option</a>. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/data__t_8cpp.html
==============================================================================
--- sandbox/xint/doc/data__t_8cpp.html (original)
+++ sandbox/xint/doc/data__t_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
</div>
<div class="contents">
<h1>data_t.cpp File Reference</h1>
-<p>Contains the definitions for xint::detail::data_t member functions.
+<p>Contains the definitions for data_t allocation functions.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
@@ -36,7 +36,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -44,13 +44,22 @@
<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">The variable-length data_t functions.</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp80e5972139cba853c07c583d1d68268c"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">boost::xint::detail::allocate</a> (size_t max_digits, size_t initial_length)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">boost::xint::detail::reallocate</a> (data_t<> *olddata, size_t newsize)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">boost::xint::detail::duplicate</a> (data_t<> *olddata, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a5e040a2d24aaf0c1d4b85fdd0721ee8e">boost::xint::detail::duplicate</a> (data_t<> *olddata, data_t<> *data_to_copy, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">boost::xint::detail::deallocate</a> (data_t<> *data)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for xint::detail::data_t member functions. </p>
+<p>Contains the definitions for data_t allocation functions. </p>
<p>Definition in file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/data__t_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/data__t_8cpp_source.html (original)
+++ sandbox/xint/doc/data__t_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,329 +38,121 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="preprocessor">#include <cassert></span>
-<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
-<a name="l00024"></a>00024 <span class="keyword">namespace </span>xint {
-<a name="l00025"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html">00025</a> <span class="keyword">namespace </span>detail {
-<a name="l00026"></a>00026
-<a name="l00027"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">00027</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t::data_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial2, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial3) {
-<a name="l00028"></a>00028 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=1;
-<a name="l00029"></a>00029 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>;
-<a name="l00030"></a>00030 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>;
-<a name="l00031"></a>00031 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]=initial1;
-<a name="l00032"></a>00032 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[1]=initial2;
-<a name="l00033"></a>00033 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[2]=initial3;
-<a name="l00034"></a>00034 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>=0;
-<a name="l00035"></a>00035 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>;
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00039"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a91d6951498c6df25133e987c7d347c17">00039</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t::data_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c) {
-<a name="l00040"></a>00040 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> == c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>) {
-<a name="l00042"></a>00042 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>;
-<a name="l00043"></a>00043 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>;
-<a name="l00044"></a>00044 } <span class="keywordflow">else</span> {
-<a name="l00045"></a>00045 <span class="keywordflow">try</span> {
-<a name="l00046"></a>00046 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00047"></a>00047 <span class="preprocessor"> #ifdef XINT_SECURE</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>];
-<a name="l00049"></a>00049 <span class="preprocessor"> #else</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>.resize(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>, 0);
-<a name="l00051"></a>00051 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=&<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>[0];
-<a name="l00052"></a>00052 <span class="preprocessor"> #endif</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span> } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00054"></a>00054 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 memcpy(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>=0;
-<a name="l00060"></a>00060 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00064"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a84c1163a2b0a698a74125b4d21f99d12">00064</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t::data_t</a>(boost::uintmax_t n, <span class="keywordtype">bool</span>) {
-<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keywordtype">int</span> bits=std::numeric_limits<boost::uintmax_t>::digits;
-<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keywordtype">int</span> maxDigits=(bits+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>-1)/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=1;
-<a name="l00069"></a>00069 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>;
-<a name="l00070"></a>00070 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>;
-<a name="l00071"></a>00071 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[1]=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[2]=0;
-<a name="l00072"></a>00072 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>=0;
-<a name="l00073"></a>00073 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>;
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include <cassert></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>detail {
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">static</span> <span class="keywordtype">size_t</span> datasize=(<span class="keyword">sizeof</span>(data_t<>)+<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>)-1) / <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 data_t<> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(<span class="keywordtype">size_t</span> max_digits, <span class="keywordtype">size_t</span> initial_length) {
+<a name="l00029"></a>00029 <span class="keywordflow">if</span> (max_digits < 1) max_digits = 1;
+<a name="l00030"></a>00030 <span class="keywordtype">size_t</span> count = max_digits - 1 + datasize;
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="keywordflow">try</span> {
+<a name="l00033"></a>00033 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *storage(<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[count]);
+<a name="l00034"></a>00034 data_t<> *r=<span class="keyword">reinterpret_cast<</span>data_t<>*<span class="keyword">></span>(storage);
+<a name="l00035"></a>00035 r->copies=0;
+<a name="l00036"></a>00036 r->length=(std::min)(initial_length, max_digits);
+<a name="l00037"></a>00037 r->max_length=max_digits;
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p = r->magnitude, *pe = p + r->length;
+<a name="l00040"></a>00040 <span class="keywordflow">while</span> (p!=pe) *p++=0;
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> r;
+<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00043"></a>00043 <span class="keywordflow">throw</span> exceptions::overflow_error(<span class="stringliteral">"Out of memory allocating integer"</span>);
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 data_t<> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">reallocate</a>(data_t<> *olddata, <span class="keywordtype">size_t</span> newsize) {
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (olddata==0) {
+<a name="l00049"></a>00049 data_t<> *newdata=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(newsize);
+<a name="l00050"></a>00050 newdata->copies=1;
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> newdata;
+<a name="l00052"></a>00052 } <span class="keywordflow">if</span> (olddata->copies == 1 && newsize <= olddata->max_length) {
+<a name="l00053"></a>00053 <span class="comment">// We can re-use this data.</span>
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (olddata->length < newsize) {
+<a name="l00055"></a>00055 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=olddata->magnitude + olddata->length,
+<a name="l00056"></a>00056 *pe=olddata->magnitude + newsize;
+<a name="l00057"></a>00057 <span class="keywordflow">while</span> (p!=pe) *p++=0;
+<a name="l00058"></a>00058 } <span class="keywordflow">else</span> {
+<a name="l00059"></a>00059 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=olddata->magnitude + olddata->length,
+<a name="l00060"></a>00060 *pe=olddata->magnitude + newsize;
+<a name="l00061"></a>00061 <span class="keywordflow">while</span> (p!=pe) *(--p)=0;
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 olddata->length = newsize;
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> olddata;
+<a name="l00065"></a>00065 } <span class="keywordflow">else</span> {
+<a name="l00066"></a>00066 <span class="comment">// Have to allocate new data.</span>
+<a name="l00067"></a>00067 data_t<> *newdata=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(newsize, 0);
+<a name="l00068"></a>00068 newdata->copies=1;
+<a name="l00069"></a>00069 newdata->length=newsize;
+<a name="l00070"></a>00070 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s=olddata->magnitude, *se=s+olddata->length,
+<a name="l00071"></a>00071 *t=newdata->magnitude, *te=t+newdata->length;
+<a name="l00072"></a>00072 <span class="keywordflow">while</span> (s!=se) *t++ = *s++;
+<a name="l00073"></a>00073 <span class="keywordflow">while</span> (t < te) *t++ = 0;
<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(maxDigits);
-<a name="l00076"></a>00076 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00077"></a>00077 <span class="keywordflow">while</span> (n != 0) {
-<a name="l00078"></a>00078 *i++=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
-<a name="l00079"></a>00079 n >>= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="preprocessor">#ifdef XINT_SECURE</span>
-<a name="l00085"></a>00085 <span class="preprocessor"></span>data_t::~data_t() {
-<a name="l00086"></a>00086 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>);
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> != <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>) {
-<a name="l00088"></a>00088 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>);
-<a name="l00089"></a>00089 <span class="keyword">delete</span>[] <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="preprocessor">#endif</span>
-<a name="l00093"></a>00093 <span class="preprocessor"></span>
-<a name="l00098"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">00098</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">data_t::skipLeadingZeros</a>() {
-<a name="l00099"></a>00099 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-1;
-<a name="l00100"></a>00100 <span class="keywordflow">while</span> (d><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> && *d==0) --d;
-<a name="l00101"></a>00101 mLength=int((d-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>)+1);
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (mLength==1 && <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]==0) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>; <span class="comment">// Zero isn't negative</span>
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">00105</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">data_t::quickset</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3) {
-<a name="l00106"></a>00106 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=3;
-<a name="l00109"></a>00109 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]=d1;
-<a name="l00110"></a>00110 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[1]=d2;
-<a name="l00111"></a>00111 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[2]=d3;
-<a name="l00112"></a>00112 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>;
-<a name="l00113"></a>00113 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00116"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">00116</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">data_t::alloc</a>(<span class="keywordtype">size_t</span> newcount, <span class="keywordtype">bool</span> copydigits) {
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>==<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> && newcount<=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>) {
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (!copydigits) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>);
-<a name="l00119"></a>00119 <span class="keywordflow">else</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, (newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>));
-<a name="l00120"></a>00120 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
-<a name="l00121"></a>00121 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (newcount < <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>) {
-<a name="l00122"></a>00122 <span class="keywordflow">if</span> (copydigits) {
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (newcount><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00124"></a>00124 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
-<a name="l00125"></a>00125 } <span class="keywordflow">else</span> {
-<a name="l00126"></a>00126 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
-<a name="l00127"></a>00127 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 } <span class="keywordflow">else</span> {
-<a name="l00130"></a>00130 <span class="preprocessor"> #ifdef XINT_SECURE</span>
-<a name="l00131"></a>00131 <span class="preprocessor"></span> <span class="keywordtype">int</span> e=newcount;
-<a name="l00132"></a>00132 newcount=1;
-<a name="l00133"></a>00133 <span class="keywordflow">while</span> (newcount < e) newcount <<= 1;
-<a name="l00134"></a>00134 <span class="preprocessor"> #endif</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span>
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>==<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> && copydigits) {
-<a name="l00137"></a>00137 <span class="keywordflow">try</span> {
-<a name="l00138"></a>00138 <span class="preprocessor"> #ifdef XINT_SECURE</span>
-<a name="l00139"></a>00139 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[newcount];
-<a name="l00140"></a>00140 <span class="preprocessor"> #else</span>
-<a name="l00141"></a>00141 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>.resize(newcount);
-<a name="l00142"></a>00142 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=&<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>[0];
-<a name="l00143"></a>00143 <span class="preprocessor"> #endif</span>
-<a name="l00144"></a>00144 <span class="preprocessor"></span> } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00145"></a>00145 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>; <span class="comment">// Might allow for recovery in some cases</span>
-<a name="l00146"></a>00146 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 memcpy(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
-<a name="l00150"></a>00150 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00151"></a>00151 } <span class="keywordflow">else</span> {
-<a name="l00152"></a>00152 <span class="preprocessor"> #ifdef XINT_SECURE</span>
-<a name="l00153"></a>00153 <span class="preprocessor"></span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *newDigits=0;
-<a name="l00154"></a>00154 <span class="keywordflow">try</span> {
-<a name="l00155"></a>00155 newDigits=<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[newcount];
-<a name="l00156"></a>00156 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00157"></a>00157 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="keywordflow">if</span> (copydigits) {
-<a name="l00161"></a>00161 memcpy(newDigits, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
-<a name="l00162"></a>00162 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(newDigits+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00163"></a>00163 } <span class="keywordflow">else</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(newDigits, newcount);
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>!=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>) {
-<a name="l00166"></a>00166 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>);
-<a name="l00167"></a>00167 <span class="keyword">delete</span>[] <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=newDigits;
-<a name="l00170"></a>00170 <span class="preprocessor"> #else</span>
-<a name="l00171"></a>00171 <span class="preprocessor"></span> <span class="keywordflow">try</span> {
-<a name="l00172"></a>00172 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>.resize(newcount);
-<a name="l00173"></a>00173 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00174"></a>00174 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=&<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>[0];
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (!copydigits) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, newcount);
-<a name="l00178"></a>00178 <span class="preprocessor"> #endif</span>
-<a name="l00179"></a>00179 <span class="preprocessor"></span> }
-<a name="l00180"></a>00180 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=newcount;
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183
-<a name="l00184"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">00184</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">data_t::copy</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c, <span class="keywordtype">size_t</span> extraDigits) {
-<a name="l00185"></a>00185 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+extraDigits);
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00188"></a>00188 <span class="keywordflow">if</span> (c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>==1) *<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> = *c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00189"></a>00189 <span class="keywordflow">else</span> memcpy(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="comment">// Deliberately doesn't call skipLeadingZeros().</span>
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">00196</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">data_t::zero</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, <span class="keywordtype">size_t</span> count) {
-<a name="l00197"></a>00197 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *pe=p+count;
-<a name="l00198"></a>00198 <span class="keywordflow">while</span> (p<pe) *p++=0;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00201"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">00201</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">data_t::invert</a>() {
-<a name="l00202"></a>00202 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=!<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *e=d+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00207"></a>00207 <span class="keywordflow">while</span> (d<e) {
-<a name="l00208"></a>00208 *d=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> - 1 - *d);
-<a name="l00209"></a>00209 ++d;
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00213"></a>00213 <span class="keywordflow">while</span> (d<e) {
-<a name="l00214"></a>00214 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> w=(*d)+1;
-<a name="l00215"></a>00215 (*d++)=static_cast<digit_t>(w);
-<a name="l00216"></a>00216 <span class="keywordflow">if</span> (w<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) <span class="keywordflow">break</span>;
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221
-<a name="l00222"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">00222</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">data_t::negate</a>() {
-<a name="l00223"></a>00223 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 <span class="comment">// If it's zero, don't change the sign</span>
-<a name="l00226"></a>00226 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>>1 || <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]!=0) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=!<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228
-<a name="l00229"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">00229</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">data_t::add</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& addend) {
-<a name="l00230"></a>00230 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00231"></a>00231 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 <span class="comment">// The answer to any addition problem contains, at most, one digit more</span>
-<a name="l00234"></a>00234 <span class="comment">// than the largest addend.</span>
-<a name="l00235"></a>00235 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+1);
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237 <span class="comment">// Now add the digits, starting at the least-significant digit.</span>
-<a name="l00238"></a>00238 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> carry=0;
-<a name="l00239"></a>00239 <span class="keywordtype">size_t</span> x=0;
-<a name="l00240"></a>00240 <span class="keywordflow">for</span> (; x<addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>; ++x) {
-<a name="l00241"></a>00241 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x])+addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+carry;
-<a name="l00242"></a>00242 <span class="keywordflow">if</span> (t>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry=1; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; } <span class="keywordflow">else</span> carry=0;
-<a name="l00243"></a>00243 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keywordflow">while</span> (carry) {
-<a name="l00247"></a>00247 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x])+1;
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (t>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry=1; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; } <span class="keywordflow">else</span> carry=0;
-<a name="l00249"></a>00249 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00250"></a>00250 ++x;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255
-<a name="l00256"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">00256</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">data_t::subtract</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& subtrahend) {
-<a name="l00257"></a>00257 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00258"></a>00258 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 <span class="comment">// For subtraction, the answer will always be less than or equal to the</span>
-<a name="l00261"></a>00261 <span class="comment">// size of the longest operand, so we've already got enough room.</span>
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 <span class="comment">// Now subtract the digits, starting at the least-significant one.</span>
-<a name="l00264"></a>00264 <span class="keywordtype">size_t</span> x;
-<a name="l00265"></a>00265 <span class="keywordtype">int</span> borrow=0;
-<a name="l00266"></a>00266 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t;
-<a name="l00267"></a>00267 <span class="keywordflow">for</span> (x=0; x<subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>; ++x) {
-<a name="l00268"></a>00268 t=(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>)-subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]-borrow;
-<a name="l00269"></a>00269 if (t<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow=1; <span class="keywordflow">else</span> { borrow=0; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
-<a name="l00270"></a>00270 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00271"></a>00271 }
-<a name="l00272"></a>00272
-<a name="l00273"></a>00273 <span class="keywordflow">for</span> (; x<<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> && borrow; ++x) {
-<a name="l00274"></a>00274 t=(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>)-borrow;
-<a name="l00275"></a>00275 <span class="keywordflow">if</span> (t<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow=1; <span class="keywordflow">else</span> { borrow=0; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
-<a name="l00276"></a>00276 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00277"></a>00277 }
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <span class="keywordflow">if</span> (borrow) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>();
-<a name="l00280"></a>00280 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">00283</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">data_t::shift_left</a>(<span class="keywordtype">size_t</span> byBits) {
-<a name="l00284"></a>00284 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00285"></a>00285 assert(byBits>0);
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00288"></a>00288 <span class="keywordtype">size_t</span> oldLength=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00289"></a>00289
-<a name="l00290"></a>00290 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+bytes+1);
-<a name="l00291"></a>00291
-<a name="l00292"></a>00292 <span class="keywordflow">if</span> (bits != 0) {
-<a name="l00293"></a>00293 <span class="comment">// Handle both bits and bytes in one pass</span>
-<a name="l00294"></a>00294 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+oldLength-1, *t=s+bytes+1;
-<a name="l00295"></a>00295
-<a name="l00296"></a>00296 *t-- = *s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits);
-<a name="l00297"></a>00297 <span class="keywordflow">while</span> (s > <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>) {
-<a name="l00298"></a>00298 *t = (*s-- << bits);
-<a name="l00299"></a>00299 *t-- |= (*s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits));
-<a name="l00300"></a>00300 }
-<a name="l00301"></a>00301 *t = (*s << bits);
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <span class="keywordflow">if</span> (bytes != 0) memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00304"></a>00304 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
-<a name="l00305"></a>00305 memmove(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+bytes, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * oldLength);
-<a name="l00306"></a>00306 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00307"></a>00307 }
-<a name="l00308"></a>00308 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00311"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">00311</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">data_t::shift_right</a>(<span class="keywordtype">size_t</span> byBits) {
-<a name="l00312"></a>00312 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00313"></a>00313 assert(byBits>0);
-<a name="l00314"></a>00314
-<a name="l00315"></a>00315 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>,
-<a name="l00316"></a>00316 bits2 = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits;
-<a name="l00317"></a>00317
-<a name="l00318"></a>00318 <span class="keywordflow">if</span> (bytes >= <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) {
-<a name="l00319"></a>00319 <span class="comment">// Right-shift it into oblivion.</span>
-<a name="l00320"></a>00320 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=1;
-<a name="l00321"></a>00321 *<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=0;
-<a name="l00322"></a>00322 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits != 0) {
-<a name="l00323"></a>00323 <span class="comment">// Handle both bits and bytes in one pass</span>
-<a name="l00324"></a>00324 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+bytes, *se=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-1;
-<a name="l00325"></a>00325 <span class="keywordflow">while</span> (s!=se) {
-<a name="l00326"></a>00326 *t = (*s++ >> bits);
-<a name="l00327"></a>00327 *t++ |= (*s << bits2);
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329 *t = (*s >> bits);
-<a name="l00330"></a>00330 <span class="keywordflow">if</span> (bytes != 0) {
-<a name="l00331"></a>00331 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+mLength-bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00332"></a>00332 mLength-=bytes;
-<a name="l00333"></a>00333 }
-<a name="l00334"></a>00334 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00335"></a>00335 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
-<a name="l00336"></a>00336 memmove(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> + bytes, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> - bytes));
-<a name="l00337"></a>00337 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> + <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> - bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00338"></a>00338 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-=bytes;
-<a name="l00339"></a>00339 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00340"></a>00340 }
-<a name="l00341"></a>00341 }
-<a name="l00342"></a>00342
-<a name="l00343"></a>00343 } <span class="comment">// namespace detail</span>
-<a name="l00344"></a>00344 } <span class="comment">// namespace xint</span>
-<a name="l00345"></a>00345 } <span class="comment">// namespace boost</span>
+<a name="l00075"></a>00075 <span class="keywordflow">if</span> (--olddata->copies == 0) <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a>(olddata);
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> newdata;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 data_t<> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a>(data_t<> *olddata, <span class="keywordtype">size_t</span> extra) {
+<a name="l00081"></a>00081 data_t<> *r = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(olddata->length+extra, 0);
+<a name="l00082"></a>00082 r->length = olddata->length;
+<a name="l00083"></a>00083 r->copies=1;
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s = olddata->magnitude, *se = s + olddata->length,
+<a name="l00086"></a>00086 *t = r->magnitude, *te = t + olddata->length + extra;
+<a name="l00087"></a>00087 <span class="keywordflow">while</span> (s!=se) *t++ = *s++;
+<a name="l00088"></a>00088 <span class="keywordflow">while</span> (t < te) *t++ = 0;
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (olddata && --olddata->copies == 0) <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a>(olddata);
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> r;
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 data_t<> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a>(data_t<> *olddata, data_t<> *data_to_copy, <span class="keywordtype">size_t</span> extra) {
+<a name="l00095"></a>00095 <span class="keywordflow">if</span> (!olddata || olddata->copies > 1 || data_to_copy->length + extra >
+<a name="l00096"></a>00096 olddata->max_length)
+<a name="l00097"></a>00097 {
+<a name="l00098"></a>00098 data_t<> *r = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(data_to_copy->length+extra, 0);
+<a name="l00099"></a>00099 r->length = data_to_copy->length + extra;
+<a name="l00100"></a>00100 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s = data_to_copy->magnitude, *se = s + data_to_copy->length,
+<a name="l00101"></a>00101 *t = r->magnitude, *te = t + r->length;
+<a name="l00102"></a>00102 <span class="keywordflow">while</span> (s!=se) *t++ = *s++;
+<a name="l00103"></a>00103 <span class="keywordflow">while</span> (t < te) *t++ = 0;
+<a name="l00104"></a>00104 r->copies=1;
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> (olddata && --olddata->copies == 0) <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a>(olddata);
+<a name="l00106"></a>00106 <span class="keywordflow">return</span> r;
+<a name="l00107"></a>00107 } <span class="keywordflow">else</span> {
+<a name="l00108"></a>00108 data_t<> *r = olddata;
+<a name="l00109"></a>00109 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s = data_to_copy->magnitude, *se = s + data_to_copy->length,
+<a name="l00110"></a>00110 *t = r->magnitude, *te = t + r->length + extra;
+<a name="l00111"></a>00111 <span class="keywordflow">while</span> (s != se) *t++ = *s++;
+<a name="l00112"></a>00112 <span class="keywordflow">while</span> (t < te) *t++ = 0;
+<a name="l00113"></a>00113 r->length = data_to_copy->length;
+<a name="l00114"></a>00114 <span class="keywordflow">return</span> r;
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a>(data_t<> *data) {
+<a name="l00119"></a>00119 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *digits=<span class="keyword">reinterpret_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>*<span class="keyword">></span>(data);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="preprocessor"> #ifdef XINT_SECURE</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p = digits, *pe = p + data->max_length + datasize;
+<a name="l00123"></a>00123 <span class="keywordflow">while</span> (p != pe) *p++ = 0;
+<a name="l00124"></a>00124 <span class="preprocessor"> #endif</span>
+<a name="l00125"></a>00125 <span class="preprocessor"></span>
+<a name="l00126"></a>00126 <span class="keyword">delete</span>[] digits;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 } <span class="comment">// namespace detail</span>
+<a name="l00130"></a>00130 } <span class="comment">// namespace xint</span>
+<a name="l00131"></a>00131 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/dependencies.html
==============================================================================
--- sandbox/xint/doc/dependencies.html (original)
+++ sandbox/xint/doc/dependencies.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,7 +36,7 @@
</ul>
<p>With the exception of Boost.Thread, all of these are header-only libraries, meaning that you don't need to worry about linking your program with them. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/dependencies_8dox.html
==============================================================================
--- sandbox/xint/doc/dependencies_8dox.html (original)
+++ sandbox/xint/doc/dependencies_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/dependencies.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/dox/acknowledgements.dox
==============================================================================
--- sandbox/xint/doc/dox/acknowledgements.dox (original)
+++ sandbox/xint/doc/dox/acknowledgements.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -26,10 +26,11 @@
- Jeffrey Lee Hellrung, Jr., for advice on implementing move-aware objects, and
for an invigorating discussion on the differing needs of an integer library
versus a floating-point one, among other things.
-- Peter Dimov, for suggesting a separate \c xint::overflow_error exception
-class.
+- Peter Dimov, for suggesting a separate \c overflow_error exception class.
- "Fred," a.k.a. "Gottlob Frege", for information on infinities.
-- Joachim Faulhaber for a discussion of intervals and interval containers.
+- Joachim Faulhaber, for a discussion of intervals and interval containers.
+- Domagoj Saric, for suggesting a design that would allow for both
+variable-length and fixed-length integers.
And the other Boost development list members who joined the discussion:
Modified: sandbox/xint/doc/dox/copyonwrite.dox
==============================================================================
--- sandbox/xint/doc/dox/copyonwrite.dox (original)
+++ sandbox/xint/doc/dox/copyonwrite.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -1,10 +1,11 @@
/*! \page cow Copying and Argument-Passing
-By default, the integer classes use copy-on-write, which means that if you copy
-an integer, the copy and the original share the same storage. They are only
-assigned separate storage when one of them is changed. This mechanism makes
-copying an integer (explicitly, by returning it, or by using it as a
-non-reference parameter to a function) very fast, regardless of its size.
+By default, the integer and nothrow_integer classes use copy-on-write, which
+means that if you copy one of them, the copy and the original share the same
+storage. They are only assigned separate storage when one of them is changed.
+This mechanism makes copying a number (explicitly, by returning it, or by using
+it as a non-reference parameter to a function) very fast, regardless of its
+size.
Unfortunately, this makes thread-safe operation impossible. If you need to use
the library from multiple threads, you can disable this behavior by compiling it
Modified: sandbox/xint/doc/dox/exceptions.dox
==============================================================================
--- sandbox/xint/doc/dox/exceptions.dox (original)
+++ sandbox/xint/doc/dox/exceptions.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -1,47 +1,19 @@
-/*! \page exceptions Exceptions and Exception-Blocking
+/*! \page exceptions Exceptions and the \c nothrow_integer type.
-\section blocking Exception Blocking
+Many things can go wrong while operating on an integer, such as divide-by-zero
+errors. Under normal circumstances, these result in exceptions. But exceptions
+sometimes make your code harder to follow, or even harder to write. That's why
+this library includes the \c nothrow_integer type.
+
+The \c nothrow_integer type acts like a wrapper around the standard integer
+type, and has all of the functions that the standard type does (though a few
+are, of necessity, prefixed with <code>nothrow_</code>). When you use it, any
+exceptions generated by the library are caught internally, and the function
+returns a special value indicating failure (most often the \ref nan
+"Not-a-Number" value).
-This library includes a mechanism for preventing most exceptions from being
-thrown. This was added to give you, the developer using the library, maximum
-flexibility in dealing with its functions. You can choose to deal with errors
-by catching exceptions or by checking returned values for error codes, on a
-case-by-case basis, depending on which would make for easier or more readable
-code.
-
-\section howitworks How it Works
-
-When exceptions are blocked, any function from the \c xint::blockable namespace
-that would normally throw an exception will return a special value indicating
-failure instead. For functions that return an integer, this will be \ref nan
-"the Not-a-Number value"; for other functions, the value will be noted in the
-documentation.
-
-\warning
-
-When exceptions are blocked, \e any function in the \c xint::blockable namespace
-can return Not-a-Number under certain conditions, not just the ones listed as
-throwing exceptions directly. An insufficient-memory exception
-(<code>xint::overflow_error</code>), for instance, can happen nearly anywhere.
-
-\section howtouse How to Use the Functions
-
-By default, the library throws exceptions when it can't complete the task you've
-asked it to do, and there's no other logical way to indicate an error. But when
-it is more convenient, most of those exceptions can be blocked, by holding the
-\c xint::token object returned by the \c xint::block_exceptions function, and
-using the \c blockable::integer type. Here's an example, which can be found in
-the \c examples subdirectory as exceptions.cpp:
+Here's an example, which can be found in the \c examples subdirectory as
+exceptions.cpp:
\include exceptions.cpp
-
-If you need to ensure that exceptions are allowed, in one of your own functions
-that might be called with them blocked, you can hold the \c xint::token object
-returned by \c xint::allow_exceptions. It works the same way. Alternatively, you
-can use the functions in the \c xint::core namespace, which are immune to
-exception-blocking.
-
-\c xint::token objects should always be created on the stack, so that they are
-guaranteed to be destroyed in reverse order. If they are not, or if they are
-copied elsewhere, the results are undefined.
*/
Modified: sandbox/xint/doc/dox/history.dox
==============================================================================
--- sandbox/xint/doc/dox/history.dox (original)
+++ sandbox/xint/doc/dox/history.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -17,8 +17,8 @@
version posted to the Boost File Vault.
\b 2010-04-?? (updated through 10th)
-- Major refactoring, separating xint::integer into two classes, each with their
-own namespace (xint::core and xint::blockable), and their own functions.
+- Major refactoring, separating xint::integer and xint::nothrow_integer and
+eliminating the exception-blocking functions.
- Fixed problem with MSVC 9.
- Major overhaul of the division function.
- All test functions now use Boost.Test.
Modified: sandbox/xint/doc/dox/index.dox
==============================================================================
--- sandbox/xint/doc/dox/index.dox (original)
+++ sandbox/xint/doc/dox/index.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -44,15 +44,16 @@
That's the best part. If you've installed or compiled the Boost library already,
all you need to do is add <code>\#include \<boost/xint/xint.hpp\></code> at the
-top of your source code file, and declare your variable as type \c
-boost::xint::core::integer. Then just use it the way you'd use any integer. If
-you need something more advanced, take a look in \ref boost::xint
-"the reference section" and you just might find it.
+top of your source code file, throw in a \c using line to say which type you
+want to use, and declare your variable as type boost::xint::integer. Then just
+use it the way you'd use any integer. If you need something more advanced, take
+a look in \ref boost::xint "the reference section" and you just might find it.
More information on how to use it can be found on the pages listed below.
Detailed Usage Information:
- \subpage nan
+- \subpage zero
- \subpage primes (with example code)
- \subpage exceptions (with example code)
- \subpage random
Modified: sandbox/xint/doc/dox/nan.dox
==============================================================================
--- sandbox/xint/doc/dox/nan.dox (original)
+++ sandbox/xint/doc/dox/nan.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,28 +2,25 @@
Sometimes it's useful for a variable to have a value that doesn't represent any
proper value, to indicate that it hasn't been specified or that there was an
-error in a calculation. For that purpose, the XInt library provides
-Not-a-Number (which can only be represented by the blockable::integer type).
+error in a calculation. For that purpose, the \c nothrow_integer type provides a
+Not-a-Number value.
-To create a Not-a-Number, use the blockable::integer::nan function. No other
+To create a Not-a-Number, use the \c nothrow_integer::nan function. No other
library function will return a Not-a-Number except under the following
circumstances:
-- If a function that returns a \c blockable::integer tries to throw an
-exception, but exceptions are blocked.
-- If the string-to-integer functions in the \c blockable namespace are asked to
-convert the string \c "#NaN#".
+- If a function that returns a \c nothrow_integer tries to throw an exception.
+- If the string-to-nothrow_integer functions are asked to convert the string
+\c "#NaN#".
The only things you can do with a Not-a-Number are:
-- Test for it, using the member function blockable::integer::is_nan.
+- Test for it, using the member function \c nothrow_integer::is_nan.
- Convert it to a string, or write it to a stream. The result will be the string
\c "#NaN#".
- Make a copy of it.
-If you attempt to do anything else with it, you will either get an \c
-xint::not_a_number exception, or if exceptions are blocked, a special value
+If you attempt to do anything else with it, you will get a special value
indicating failure (which will be another Not-a-Number, if the function you're
-calling returns a <code>blockable::integer</code>).
+calling returns a <code>nothrow_integer</code>).
*/
-
Modified: sandbox/xint/doc/dox/r_core.dox
==============================================================================
--- sandbox/xint/doc/dox/r_core.dox (original)
+++ sandbox/xint/doc/dox/r_core.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -1,31 +1,25 @@
-/*! \page r_core What's with the \c core and \c blockable namespaces?
+/*! \page r_core What's with the \c nothrow_integer type?
Several people on the Boost developers' mailing list expressed reservations
-about the exception-blocking mechanism and the Not-a-Number value. After a
-spirited debate, two indisputable points emerged:
+about the exception-blocking mechanism in the original implementation, and the
+Not-a-Number value that it required. After a spirited debate, two indisputable
+points emerged:
- The existence of a Not-a-Number value forced every function to check its
parameters for it.
-- The exception blocking mechanism would cause problems with any library built
+- The exception-blocking mechanism would cause problems with any library built
on this one, such as the arbitrary-precision real type that I'm certain someone
will build.
-I believe that the exception-blocking feature is useful, so I proposed a
-compromise: two \c integer classes, one that would always contain a valid
-%integer value and would be immune to exception-blocking, and one that would
-honor exception-blocking and could hold the Not-a-Number value. These now reside
-in the \c xint::core and \c xint::blockable namespaces.
+To deal with this, I separated the \c xint::integer and \c xint::nothrow_integer
+types. \c xint::integer functions now always throw exceptions on errors, and
+always hold valid numbers; \c xint::nothrow_integer functions (as implied by the
+name) never throw exceptions, instead returning the Not-a-Number value (which
+only \c xint::nothrow_integer can hold).
-Functions in the \c core namespace will always throw an exception on any error,
-and will only call other functions within the \c core namespace. That ensures
-that the Not-a-Number value only needs to be checked for in a single \c
-xint::core::integer constructor, and all but eliminates any speed penalty from
-it. It also gives a base of functions that are immune to the exception-blocking
-mechanism, which provides firm ground to build other libraries on.
-
-Every function in the \c blockable namespace calls its \c core counterpart in a
-try/catch construct, allowing it to intercept any exceptions and either pass
-them through (if exceptions are allowed) or take some alternate action, such as
-returning a Not-a-Number value. That preserves the exception-blocking feature as
-well.
+This design ensures that the Not-a-Number value only needs to be checked for in
+a single place (the \c xint::integer conversion constructor), and ensures that
+any speed penalty from it is only incurred by people who choose to use the \c
+nothrow_integer type. It also preserves the no-exceptions behavior, which is
+useful under some circumstances.
*/
Modified: sandbox/xint/doc/dox/r_exception_blocking.dox
==============================================================================
--- sandbox/xint/doc/dox/r_exception_blocking.dox (original)
+++ sandbox/xint/doc/dox/r_exception_blocking.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -1,8 +1,8 @@
-/*! \page r_exception_blocking Why have an exception-blocking system at all? Exceptions are standard C++!
+/*! \page r_exception_blocking Why have a nothrow_integer type at all?
-Yes, they are, but there are a number of people that dislike them intensely and
-won't use any library that forces its users to deal with them. But that is not
-the primary motivation for the exception-blocking mechanism.
+Exceptions are standard C++, but there are a number of people that dislike them
+intensely and won't use any library that forces its users to deal with them.
+That is not the primary motivation for the \c nothrow_integer type though.
There are also times when exception-handling can get in the way of writing code
that is easily understandable by other people. Any software developer
@@ -12,8 +12,8 @@
(see std::string::find, for just one example).
Writing code that is \e human-readable -- not just machine-readable -- is
-difficult, and there's little that anyone can do to change that. But this
-library's exception-blocking mechanism makes it easier to produce such code,
-with very little effort, by giving the developer a choice: exceptions, error
-codes, or both, whatever makes for the most readable and understandable code.
+difficult, and there's little that anyone can do to change that. But giving the
+developer the choice to use either exceptions or error codes, depending on which
+is most readable, makes it easier to produce such code, and costs nothing to the
+people who choose not to use it.
*/
Modified: sandbox/xint/doc/dox/r_nan.dox
==============================================================================
--- sandbox/xint/doc/dox/r_nan.dox (original)
+++ sandbox/xint/doc/dox/r_nan.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -1,6 +1,5 @@
/*! \page r_nan Why have a Not-a-Number value?
Because it's the cleanest way I could find to return answers that don't
-represent a valid \c integer, which is necessary for the exception-blocking
-mechanism.
+represent a valid number, which is necessary for the \c nothrow_integer type.
*/
Modified: sandbox/xint/doc/dox/r_negzero.dox
==============================================================================
--- sandbox/xint/doc/dox/r_negzero.dox (original)
+++ sandbox/xint/doc/dox/r_negzero.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -1,14 +1,7 @@
/*! \page r_negzero Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers?
-Because they're irrelevant to an arbitrary-sized integer library.
-
-The mathematical concept of zero has no sign. It's neither positive nor
-negative (or if you prefer, it's both). The concept of a signed zero is used in
-floating-point numbers to represent a value that's so small that it can't be
-distinguished from zero, but which may not be an actual zero. Such a non-zero
-number does have a sign. But mathematically, a negative zero is simply zero.
-
-The concept of infinity (in either direction) comes up very rarely in an integer
-library. Since infinity is a concept, not a countable value, it is not included
-in the library at present.
+The library does have limited support for a \ref zero "\"negative zero\"" value,
+to support an unlimited-precision floating point type that will be built on it
+later. But infinity is a concept, not a countable value, and as such it is not
+included in the library at present.
*/
Modified: sandbox/xint/doc/dox/r_random.dox
==============================================================================
--- sandbox/xint/doc/dox/r_random.dox (original)
+++ sandbox/xint/doc/dox/r_random.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -4,7 +4,7 @@
strong random number generator, but at the time of this writing, the official
released version only defines it for Linux and BSD systems. The current
maintainer, Steven Watanabe, says that he has just added Windows compatibility
-to it, so the xint::strong_random_generator class will likely be reduced to
+to it, so the \c xint::strong_random_generator class will likely be reduced to
a typedef for \c boost::random_device, or a thin shell around it, in the near
future.
*/
Modified: sandbox/xint/doc/dox/random.dox
==============================================================================
--- sandbox/xint/doc/dox/random.dox (original)
+++ sandbox/xint/doc/dox/random.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -7,8 +7,8 @@
The XInt library provides a convenience class, \c xint::strong_random_generator,
for both Windows and UNIX-derived systems. It will throw an exception of type
-\c xint::no_strong_random if you try to instantiate it on a system that does not
-have a strong random number generator.
+\c no_strong_random if you try to instantiate it on a system that does not have
+a strong random number generator.
See the code at the top of \ref primes "the Prime Numbers page" for an example
of how to use it.
Modified: sandbox/xint/doc/dox/rationale.dox
==============================================================================
--- sandbox/xint/doc/dox/rationale.dox (original)
+++ sandbox/xint/doc/dox/rationale.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -9,7 +9,7 @@
- \subpage r_cow
- \subpage r_shared_ptr
-\section snan Not-a-Number and Exception Blocking
+\section snan Not-a-Number and The nothrow_integer Type
- \subpage r_nan
- \subpage r_exception_blocking
- \subpage r_negzero
Modified: sandbox/xint/doc/dox/threadsafe.dox
==============================================================================
--- sandbox/xint/doc/dox/threadsafe.dox (original)
+++ sandbox/xint/doc/dox/threadsafe.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -10,6 +10,10 @@
XINT_THREADSAFE when compiling the library. You don't need to define it when
using the library, only when compiling it.
+\note
+When the library is compiled with the thread-safe option, all programs that link
+to it must also link to the Boost.Thread library.
+
To see whether your copy was compiled with thread-safe operation enabled, use
the xint::opt_thread_safe function.
*/
Added: sandbox/xint/doc/dox/zero.dox
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/dox/zero.dox 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,25 @@
+/*! \page zero Zero and "Negative Zero"
+
+The mathematical concept of zero has no sign. It's neither positive nor
+negative (or if you prefer, it's both). The concept of a signed zero is used in
+floating-point numbers to represent a value that's so small that it can't be
+distinguished from zero, but which may not be an actual zero. Such a non-zero
+number does have a sign. But mathematically, a negative zero is simply zero.
+
+However, the XInt library does have limited support for a "negative zero," for
+use in a planned future unlimited-precision floating point library built on it.
+To get a negative zero, negate a normal zero value with the unary minus, like
+so:
+
+\code
+integer z = -integer::zero();
+\endcode
+
+A negative zero will act exactly like a "normal" zero in all respects. The only
+way to detect a sign on it is by calling \ref boost::xint::integer::sign
+"the sign function" with the \c signed_zero parameter \c true. With that
+parameter, it will return -1 on any negative number, including zero.
+
+Note that the unary minus operator and the \ref boost::xint::negate "negate"
+function are the only functions that will ever return a negative zero.
+*/
Modified: sandbox/xint/doc/ex__fibonacci.html
==============================================================================
--- sandbox/xint/doc/ex__fibonacci.html (original)
+++ sandbox/xint/doc/ex__fibonacci.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,10 +28,10 @@
<p><code>0 1 1 2 3 5 8 13 21 34 55 89 144...</code></p>
<p>You might be curious what the first Fibonacci number is that's too big to calculate using the standard C++ <code>unsigned long</code> type. A brute-force method of calculating this would be problematic, since it might not be possible to tell when it overflows. But with the XInt library, it's child's play:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include <iostream></span>
-<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></span>
+<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="This is the include-everything header.">boost/xint/xint.hpp</a>></span>
<span class="keywordtype">int</span> main() {
- <span class="keyword">using namespace </span>xint::core;
+ <span class="keyword">using namespace </span>boost::xint;
<span class="keyword">using</span> std::cout;
<span class="keyword">using</span> std::endl;
@@ -65,7 +65,7 @@
</pre></div><p>If you're not intimately familiar with the Fibonacci sequence, and how fast the numbers in it grow, the answer might shock you.</p>
<p>As you can see, using the XInt library is just like using the native integer types -- except that an <code>xint::integer</code> won't overflow on you until you completely exhaust your system's memory. :-) </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/ex__fibonacci_8dox.html
==============================================================================
--- sandbox/xint/doc/ex__fibonacci_8dox.html (original)
+++ sandbox/xint/doc/ex__fibonacci_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/ex_fibonacci.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/exception__blocker_8cpp.html
==============================================================================
--- sandbox/xint/doc/exception__blocker_8cpp.html (original)
+++ sandbox/xint/doc/exception__blocker_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,7 +36,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
@@ -71,7 +71,7 @@
</div>
</div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 03:20:09 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/exception__blocker_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/exception__blocker_8cpp_source.html (original)
+++ sandbox/xint/doc/exception__blocker_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -92,7 +92,7 @@
<a name="l00109"></a>00109 } <span class="comment">// namespace xint</span>
<a name="l00110"></a>00110 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 03:20:09 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/exceptions.html
==============================================================================
--- sandbox/xint/doc/exceptions.html (original)
+++ sandbox/xint/doc/exceptions.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Exceptions and Exception-Blocking</title>
+<title>The Extended Integer (XInt) Library: Exceptions and the \c nothrow_integer type.</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,53 +24,29 @@
<div class="contents">
-<h1><a class="anchor" id="exceptions">Exceptions and Exception-Blocking </a></h1><h2><a class="anchor" id="blocking">
-Exception Blocking</a></h2>
-<p>This library includes a mechanism for preventing most exceptions from being thrown. This was added to give you, the developer using the library, maximum flexibility in dealing with its functions. You can choose to deal with errors by catching exceptions or by checking returned values for error codes, on a case-by-case basis, depending on which would make for easier or more readable code.</p>
-<h2><a class="anchor" id="howitworks">
-How it Works</a></h2>
-<p>When exceptions are blocked, any function from the <code>xint::blockable</code> namespace that would normally throw an exception will return a special value indicating failure instead. For functions that return an integer, this will be <a class="el" href="nan.html">the Not-a-Number value</a>; for other functions, the value will be noted in the documentation.</p>
-<dl class="warning"><dt><b>Warning:</b></dt><dd></dd></dl>
-<p>When exceptions are blocked, <em>any</em> function in the <code>xint::blockable</code> namespace can return Not-a-Number under certain conditions, not just the ones listed as throwing exceptions directly. An insufficient-memory exception (<code>xint::overflow_error</code>), for instance, can happen nearly anywhere.</p>
-<h2><a class="anchor" id="howtouse">
-How to Use the Functions</a></h2>
-<p>By default, the library throws exceptions when it can't complete the task you've asked it to do, and there's no other logical way to indicate an error. But when it is more convenient, most of those exceptions can be blocked, by holding the <code>xint::token</code> object returned by the <code>xint::block_exceptions</code> function, and using the <code>blockable::integer</code> type. Here's an example, which can be found in the <code>examples</code> subdirectory as exceptions.cpp:</p>
+<h1><a class="anchor" id="exceptions">Exceptions and the <code>nothrow_integer</code> type. </a></h1><p>Many things can go wrong while operating on an integer, such as divide-by-zero errors. Under normal circumstances, these result in exceptions. But exceptions sometimes make your code harder to follow, or even harder to write. That's why this library includes the <code>nothrow_integer</code> type.</p>
+<p>The <code>nothrow_integer</code> type acts like a wrapper around the standard integer type, and has all of the functions that the standard type does (though a few are, of necessity, prefixed with <code>nothrow_</code>). When you use it, any exceptions generated by the library are caught internally, and the function returns a special value indicating failure (most often the <a class="el" href="nan.html">Not-a-Number</a> value).</p>
+<p>Here's an example, which can be found in the <code>examples</code> subdirectory as exceptions.cpp:</p>
<div class="fragment"><pre class="fragment">
-<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></span>
+<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="This is the include-everything header.">boost/xint/xint.hpp</a>></span>
<span class="preprocessor">#include <ostream></span>
<span class="keywordtype">int</span> main() {
<span class="keyword">using namespace </span>std;
- <span class="keyword">using namespace </span>boost;
- <span class="keyword">using namespace </span>xint::blockable;
-
- integer n;
-
- <span class="comment">// It *is* possible to block exceptions multiple times, so this assert</span>
- <span class="comment">// checks to see whether they're presently allowed. It is not needed,</span>
- <span class="comment">// it's only here for demonstration purposes.</span>
- assert(<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">xint::exceptions_allowed</a>() == <span class="keyword">true</span>);
+ <span class="keyword">using namespace </span>boost::xint;
<span class="comment">// We'll wrap this in a try block for demonstration purposes, just to</span>
<span class="comment">// prove that it doesn't throw an exception. You normally don't need a</span>
- <span class="comment">// try block if you're only expecting blockable exceptions.</span>
+ <span class="comment">// try block if you're using nothrow_integers.</span>
<span class="keywordflow">try</span> {
- <span class="comment">// Create the "blocker" token. Until the token is destroyed, exceptions</span>
- <span class="comment">// will be blocked, except when explicitly re-enabled.</span>
- <a class="code" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a> blocker=<a class="code" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a>();
-
- <span class="comment">// This assert is only here for demonstration purposes.</span>
- assert(<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">xint::exceptions_allowed</a>() == <span class="keyword">false</span>);
-
- <span class="comment">// Call the function(s) that should be exception-blocked. The example</span>
- <span class="comment">// call tries to interpret an empty string as an integer, which would</span>
- <span class="comment">// normally throw an xint::invalid_digit exception.</span>
- n = integer(<span class="stringliteral">""</span>);
+ <span class="comment">// Call the function(s) that may produce errors. The example call tries</span>
+ <span class="comment">// to interpret an empty string as an integer, which would normally</span>
+ <span class="comment">// throw an xint::exception::invalid_digit.</span>
+ nothrow_integer n = nothrow_integer(<span class="stringliteral">""</span>);
<span class="comment">// n should be Not-a-Number, because there was an error but exceptions</span>
- <span class="comment">// were blocked. This example code is fairly useless, and is only here</span>
- <span class="comment">// for demonstration purposes, but you should always test for Not-a-Number</span>
- <span class="comment">// when blocking exceptions.</span>
+ <span class="comment">// are not allowed on nothrow_integers. This example code is fairly</span>
+ <span class="comment">// useless, but it shows how to test for errors.</span>
<span class="keywordflow">if</span> (n.is_nan()) {
cout << <span class="stringliteral">"n is Not-a-Number, do some intelligent error handling here."</span>
<< endl;
@@ -82,19 +58,12 @@
} <span class="keywordflow">catch</span> (std::exception& e) {
<span class="comment">// This example code should never get to this block, because exceptions</span>
<span class="comment">// were blocked.</span>
- cout << <span class="stringliteral">"Error, threw an exception when exceptions were blocked!\n"</span> <<
- e.what() << endl;
+ cout << <span class="stringliteral">"Error, nothrow_integer threw an exception!\n"</span> << e.what() <<
+ endl;
}
-
- <span class="comment">// Now exceptions are re-enabled, because the blocking behavior ended when</span>
- <span class="comment">// the "blocker" token was destroyed at the end of the try block. Note that</span>
- <span class="comment">// this assert is not needed, it's only here for demonstration purposes.</span>
- assert(<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">xint::exceptions_allowed</a>() == <span class="keyword">true</span>);
}
-</pre></div><p>If you need to ensure that exceptions are allowed, in one of your own functions that might be called with them blocked, you can hold the <code>xint::token</code> object returned by <code>xint::allow_exceptions</code>. It works the same way. Alternatively, you can use the functions in the <code>xint::core</code> namespace, which are immune to exception-blocking.</p>
-<p><code>xint::token</code> objects should always be created on the stack, so that they are guaranteed to be destroyed in reverse order. If they are not, or if they are copied elsewhere, the results are undefined. </p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+</pre></div> </div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/exceptions_8dox.html
==============================================================================
--- sandbox/xint/doc/exceptions_8dox.html (original)
+++ sandbox/xint/doc/exceptions_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/exceptions.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/exceptions_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/exceptions_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: exceptions.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>exceptions.hpp File Reference</h1>
+<p>The exception namespace.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">boost::xint::exceptions::invalid_argument</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">boost::xint::exceptions::invalid_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">boost::xint::exceptions::invalid_digit</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">boost::xint::exceptions::invalid_modulus</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">boost::xint::exceptions::divide_by_zero</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">boost::xint::exceptions::cannot_represent</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">boost::xint::exceptions::too_big</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">boost::xint::exceptions::not_a_number</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">boost::xint::exceptions::no_strong_random</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">boost::xint::exceptions::overflow_error</a></td></tr>
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Every exception the library throws is from this namespace. </p>
+<br/></td></tr>
+</p>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The exception namespace. </p>
+
+<p>Definition in file <a class="el" href="exceptions_8hpp_source.html">exceptions.hpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/exceptions_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/exceptions_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: exceptions.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>exceptions.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_EXCEPTIONS_HPP</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_EXCEPTIONS_HPP</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>"</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
+<a name="l00024"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html#a8ba3e56172de34c772b287ce8e325f32">00024</a> <span class="keyword">namespace </span>xint {
+<a name="l00025"></a><a class="code" href="namespaceboost_1_1xint_1_1exceptions.html">00025</a>
+<a name="l00027"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">00027</a> <span class="keyword">namespace </span>exceptions {
+<a name="l00028"></a>00028
+<a name="l00032"></a>00032 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a> {
+<a name="l00033"></a>00033 <span class="keyword">public</span>:
+<a name="l00034"></a>00034 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html#a8ba3e56172de34c772b287ce8e325f32">invalid_argument</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid argument"</span>):
+<a name="l00035"></a>00035 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html#a8ba3e56172de34c772b287ce8e325f32">std::invalid_argument</a>(what) { }
+<a name="l00036"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">00036</a> };
+<a name="l00037"></a>00037
+<a name="l00041"></a>00041 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">invalid_base</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a> {
+<a name="l00042"></a>00042 <span class="keyword">public</span>:
+<a name="l00043"></a>00043 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">invalid_base</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid base"</span>): <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a>(what)
+<a name="l00044"></a>00044 { }
+<a name="l00045"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">00045</a> };
+<a name="l00046"></a>00046
+<a name="l00050"></a>00050 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">invalid_digit</a>: <span class="keyword">public</span> std::range_error {
+<a name="l00051"></a>00051 <span class="keyword">public</span>:
+<a name="l00052"></a>00052 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">invalid_digit</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid digit"</span>): range_error(what)
+<a name="l00053"></a>00053 { }
+<a name="l00054"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">00054</a> };
+<a name="l00055"></a>00055
+<a name="l00059"></a>00059 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">invalid_modulus</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a> {
+<a name="l00060"></a>00060 <span class="keyword">public</span>:
+<a name="l00061"></a>00061 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">invalid_modulus</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid modulus"</span>):
+<a name="l00062"></a>00062 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a>(what) { }
+<a name="l00063"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">00063</a> };
+<a name="l00064"></a>00064
+<a name="l00068"></a>00068 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">divide_by_zero</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a> {
+<a name="l00069"></a>00069 <span class="keyword">public</span>:
+<a name="l00070"></a>00070 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">divide_by_zero</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"divide by zero error"</span>):
+<a name="l00071"></a>00071 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a>(what) { }
+<a name="l00072"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">00072</a> };
+<a name="l00073"></a>00073
+<a name="l00077"></a>00077 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">cannot_represent</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a> {
+<a name="l00078"></a>00078 <span class="keyword">public</span>:
+<a name="l00079"></a>00079 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">cannot_represent</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00080"></a>00080 <span class="stringliteral">"cannot represent the requested value"</span>): <a class="code" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a>(what) { }
+<a name="l00081"></a><a class="code" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">00081</a> };
+<a name="l00082"></a>00082
+<a name="l00086"></a>00086 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">too_big</a>: <span class="keyword">public</span> std::range_error {
+<a name="l00087"></a>00087 <span class="keyword">public</span>:
+<a name="l00088"></a>00088 <a class="code" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">too_big</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00089"></a>00089 <span class="stringliteral">"value out of range for requested conversion"</span>): range_error(what) { }
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091
+<a name="l00099"></a>00099 <span class="keyword">class </span>not_a_number: <span class="keyword">public</span> std::runtime_error {
+<a name="l00100"></a>00100 <span class="keyword">public</span>:
+<a name="l00101"></a>00101 not_a_number(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"attempted to use a Not-a-Number"</span>):
+<a name="l00102"></a>00102 runtime_error(what) { }
+<a name="l00103"></a>00103 };
+<a name="l00104"></a>00104
+<a name="l00114"></a>00114 <span class="keyword">class </span>no_strong_random: <span class="keyword">public</span> std::runtime_error {
+<a name="l00115"></a>00115 <span class="keyword">public</span>:
+<a name="l00116"></a>00116 no_strong_random(<span class="keyword">const</span> std::string& what=
+<a name="l00117"></a>00117 <span class="stringliteral">"system does not have a strong random generator"</span>):
+<a name="l00118"></a>00118 runtime_error(what) { }
+<a name="l00119"></a>00119 };
+<a name="l00120"></a>00120
+<a name="l00127"></a>00127 <span class="keyword">class </span>overflow_error: <span class="keyword">public</span> std::overflow_error {
+<a name="l00128"></a>00128 <span class="keyword">public</span>:
+<a name="l00129"></a>00129 overflow_error(<span class="keyword">const</span> std::string& what=
+<a name="l00130"></a>00130 <span class="stringliteral">"overflow error: can't obtain enough memory to represent the requested number"</span>):
+<a name="l00131"></a>00131 std::overflow_error(what) { }
+<a name="l00132"></a>00132 };
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 } <span class="comment">// namespace exception</span>
+<a name="l00135"></a>00135 } <span class="comment">// namespace xint</span>
+<a name="l00136"></a>00136 } <span class="comment">// namespace boost</span>
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_EXCEPTIONS_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Modified: sandbox/xint/doc/files.html
==============================================================================
--- sandbox/xint/doc/files.html (original)
+++ sandbox/xint/doc/files.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,33 +27,36 @@
</div>
<div class="contents">
<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="xint_8hpp.html">xint.hpp</a> [code]</td><td class="indexvalue">The main header file for the XInt library </td></tr>
- <tr><td class="indexkey"><a class="el" href="xint__data__t_8hpp.html">xint_data_t.hpp</a> [code]</td><td class="indexvalue">Internal details of an xint::integer </td></tr>
- <tr><td class="indexkey"><a class="el" href="xint__monty_8hpp.html">xint_monty.hpp</a> [code]</td><td class="indexvalue">Internally-used functions </td></tr>
- <tr><td class="indexkey"><a class="el" href="xint__test_8hpp.html">xint_test.hpp</a> [code]</td><td class="indexvalue">Declares the library's self-testing functions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="exceptions_8hpp.html">exceptions.hpp</a> [code]</td><td class="indexvalue">The exception namespace </td></tr>
+ <tr><td class="indexkey"><a class="el" href="integer_8hpp.html">integer.hpp</a> [code]</td><td class="indexvalue">Declares the core integer type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="internals_8hpp.html">internals.hpp</a> [code]</td><td class="indexvalue">Contains the internal definitions required for all XInt types </td></tr>
+ <tr><td class="indexkey"><a class="el" href="monty_8hpp.html">monty.hpp</a> [code]</td><td class="indexvalue">Internally-used functions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__integer_8hpp.html">nothrow_integer.hpp</a> [code]</td><td class="indexvalue">Declares the <code>xint::nothrow_integer</code> class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="random_8hpp.html">random.hpp</a> [code]</td><td class="indexvalue">Declares items relating to random numbers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="xint_8hpp.html">xint.hpp</a> [code]</td><td class="indexvalue">This is the include-everything header </td></tr>
+ <tr><td class="indexkey"><a class="el" href="base__integer_8cpp.html">base_integer.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the <code>base_integer</code> member functions </td></tr>
<tr><td class="indexkey"><a class="el" href="bit__manipulations_8cpp.html">bit_manipulations.cpp</a> [code]</td><td class="indexvalue">Contains the bit-manipulation functions </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__bit__manipulations_8cpp.html">blockable_bit_manipulations.cpp</a> [code]</td><td class="indexvalue">Contains the bit-manipulation functions for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__compare_8cpp.html">blockable_compare.cpp</a> [code]</td><td class="indexvalue">Contains the the compare function and comparison operators for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__convert_8cpp.html">blockable_convert.cpp</a> [code]</td><td class="indexvalue">Contains the conversion functions for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__gcd_8cpp.html">blockable_gcd.cpp</a> [code]</td><td class="indexvalue">Greatest Common Denominator and Least Common Multple for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__integer_8cpp.html">blockable_integer.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the xint::blockable::integer member functions </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__misc_8cpp.html">blockable_misc.cpp</a> [code]</td><td class="indexvalue">Functions for blockable integers that don't fall into any other category </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__modular_8cpp.html">blockable_modular.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic modular math functions for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__operators_8cpp.html">blockable_operators.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic math operators for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__powers_8cpp.html">blockable_powers.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for blockable integer functions related to powers of a number </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__primes_8cpp.html">blockable_primes.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for functions related to prime numbers for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__primitives_8cpp.html">blockable_primitives.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for math primitives for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__random_8cpp.html">blockable_random.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the random number functions for blockable integers </td></tr>
- <tr><td class="indexkey"><a class="el" href="blockable__roots_8cpp.html">blockable_roots.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for blockable integer functions related to roots of a number </td></tr>
<tr><td class="indexkey"><a class="el" href="compare_8cpp.html">compare.cpp</a> [code]</td><td class="indexvalue">Contains the the compare function and comparison operators </td></tr>
<tr><td class="indexkey"><a class="el" href="convert_8cpp.html">convert.cpp</a> [code]</td><td class="indexvalue">Contains the conversion functions </td></tr>
- <tr><td class="indexkey"><a class="el" href="data__t_8cpp.html">data_t.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for xint::detail::data_t member functions </td></tr>
- <tr><td class="indexkey"><a class="el" href="exception__blocker_8cpp.html">exception_blocker.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the exception-blocker classes and functions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="data__t_8cpp.html">data_t.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for data_t allocation functions </td></tr>
<tr><td class="indexkey"><a class="el" href="gcd_8cpp.html">gcd.cpp</a> [code]</td><td class="indexvalue">Greatest Common Denominator and Least Common Multple </td></tr>
<tr><td class="indexkey"><a class="el" href="integer_8cpp.html">integer.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the xint::integer member functions </td></tr>
<tr><td class="indexkey"><a class="el" href="misc_8cpp.html">misc.cpp</a> [code]</td><td class="indexvalue">Functions that don't fall into any other category </td></tr>
<tr><td class="indexkey"><a class="el" href="modular_8cpp.html">modular.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic modular math functions </td></tr>
<tr><td class="indexkey"><a class="el" href="monty_8cpp.html">monty.cpp</a> [code]</td><td class="indexvalue">Internally used functions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__bit__manipulations_8cpp.html">nothrow_bit_manipulations.cpp</a> [code]</td><td class="indexvalue">Contains the bit-manipulation functions for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__compare_8cpp.html">nothrow_compare.cpp</a> [code]</td><td class="indexvalue">Contains the the compare function and comparison operators for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__convert_8cpp.html">nothrow_convert.cpp</a> [code]</td><td class="indexvalue">Contains the conversion functions for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__gcd_8cpp.html">nothrow_gcd.cpp</a> [code]</td><td class="indexvalue">Greatest Common Denominator and Least Common Multple for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__integer_8cpp.html">nothrow_integer.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the <code>nothrow_integer</code> member functions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__misc_8cpp.html">nothrow_misc.cpp</a> [code]</td><td class="indexvalue">Functions for the <code>nothrow_integer</code> type that don't fall into any other category </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__modular_8cpp.html">nothrow_modular.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic modular math functions for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__operators_8cpp.html">nothrow_operators.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic math operators for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__powers_8cpp.html">nothrow_powers.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for <code>nothrow_integer</code> functions related to powers of a number </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__primes_8cpp.html">nothrow_primes.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for functions related to prime numbers for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__primitives_8cpp.html">nothrow_primitives.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for math primitives for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__random_8cpp.html">nothrow_random.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the random number functions for the <code>nothrow_integer</code> type </td></tr>
+ <tr><td class="indexkey"><a class="el" href="nothrow__roots_8cpp.html">nothrow_roots.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for <code>nothrow_integer</code> functions related to roots of a number </td></tr>
<tr><td class="indexkey"><a class="el" href="operators_8cpp.html">operators.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic math operators </td></tr>
<tr><td class="indexkey"><a class="el" href="powers_8cpp.html">powers.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for functions related to powers of a number </td></tr>
<tr><td class="indexkey"><a class="el" href="primes_8cpp.html">primes.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for functions related to prime numbers </td></tr>
@@ -62,7 +65,7 @@
<tr><td class="indexkey"><a class="el" href="roots_8cpp.html">roots.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for functions related to roots of a number </td></tr>
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/functions.html
==============================================================================
--- sandbox/xint/doc/functions.html (original)
+++ sandbox/xint/doc/functions.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,7 +36,6 @@
<div class="tabs">
<ul>
<li>_</li>
- <li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
@@ -44,6 +43,7 @@
<li>g</li>
<li>h</li>
<li>i</li>
+ <li>l</li>
<li>m</li>
<li>n</li>
<li>o</li>
@@ -60,83 +60,111 @@
Here is a list of all class members with links to the classes they belong to:
<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>_add()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">boost::xint::detail::base_integer</a>
+</li>
<li>_attach()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">boost::xint::detail::base_integer</a>
+</li>
+<li>_attach_0()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">boost::xint::detail::base_integer</a>
+</li>
+<li>_attach_1()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">boost::xint::detail::base_integer</a>
+</li>
+<li>_attach_n()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">boost::xint::detail::base_integer</a>
+</li>
+<li>_base_make_unique()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">boost::xint::detail::base_integer</a>
+</li>
+<li>_cleanup()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">boost::xint::detail::base_integer</a>
</li>
-<li>_get_data()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">boost::xint::core::base_integer</a>
+<li>_duplicate()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">boost::xint::detail::base_integer</a>
</li>
<li>_get_digit()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">boost::xint::detail::base_integer</a>
+</li>
+<li>_get_digits()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">boost::xint::detail::base_integer</a>
</li>
<li>_get_length()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">boost::xint::detail::base_integer</a>
+</li>
+<li>_get_negative()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">boost::xint::detail::base_integer</a>
</li>
-<li>_init()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">boost::xint::core::integer</a>
+<li>_is_nan()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">boost::xint::detail::base_integer</a>
</li>
<li>_is_unique()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">boost::xint::detail::base_integer</a>
+</li>
+<li>_is_zero()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">boost::xint::detail::base_integer</a>
</li>
<li>_make_unique()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">boost::xint::nothrow_integer</a>
+</li>
+<li>_realloc()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">boost::xint::detail::base_integer</a>
+</li>
+<li>_set_n()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">boost::xint::detail::base_integer</a>
</li>
<li>_set_negative()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">boost::xint::detail::base_integer</a>
</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
-<li>add()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">boost::xint::detail::data_t</a>
+<li>_shift_left()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">boost::xint::detail::base_integer</a>
</li>
-<li>alloc()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">boost::xint::detail::data_t</a>
+<li>_shift_right()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">boost::xint::detail::base_integer</a>
</li>
-<li>attach()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">boost::xint::detail::data_t</a>
+<li>_subtract()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">boost::xint::detail::base_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
<li>base_integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">boost::xint::detail::base_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>cannot_represent()
-: <a class="el" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">boost::xint::cannot_represent</a>
-</li>
-<li>copy()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">boost::xint::detail::data_t</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html#a0968d8ac61c24529816bcaf69d155b75">boost::xint::exceptions::cannot_represent</a>
</li>
-<li>count
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">boost::xint::detail::data_t::QuickDigits</a>
+<li>copies
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">boost::xint::detail::data_t< digit_count ></a>
</li>
</ul>
<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
-<li>data_t()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">boost::xint::detail::data_t</a>
-</li>
-<li>detach()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">boost::xint::detail::data_t</a>
+<li>denorm_min()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
<li>digits
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">boost::xint::detail::data_t</a>
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>digits10
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
<li>dist_t
: <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">boost::xint::detail::random_generator< T ></a>
</li>
<li>divide_by_zero()
-: <a class="el" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">boost::xint::divide_by_zero</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html#aaff4d720e4a134315acde919ff06e640">boost::xint::exceptions::divide_by_zero</a>
</li>
</ul>
@@ -145,9 +173,13 @@
<li>entropy()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">boost::xint::strong_random_generator</a>
</li>
+<li>epsilon()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
<li>even()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">boost::xint::nothrow_integer</a>
</li>
</ul>
@@ -166,251 +198,314 @@
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
+<li>has_denorm
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>has_denorm_loss
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">std::numeric_limits< boost::xint::integer ></a>
+</li>
<li>has_fixed_range
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">boost::xint::strong_random_generator</a>
</li>
+<li>has_infinity
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#afc2b5e56fb2057c2459180219491d930">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>has_quiet_NaN
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>has_signaling_NaN
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
<li>hex_digits()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
-<li>intbits
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">boost::xint::detail::data_t::QuickDigits</a>
+<li>infinity()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
<li>integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">boost::xint::integer</a>
+</li>
+<li>invalid_argument()
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html#a8ba3e56172de34c772b287ce8e325f32">boost::xint::exceptions::invalid_argument</a>
</li>
<li>invalid_base()
-: <a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">boost::xint::invalid_base</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html#a4647071020547bd103ee885bec7edffa">boost::xint::exceptions::invalid_base</a>
</li>
<li>invalid_digit()
-: <a class="el" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">boost::xint::invalid_digit</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html#abcdf43b30c3910dde89e406ca802eacc">boost::xint::exceptions::invalid_digit</a>
</li>
<li>invalid_modulus()
-: <a class="el" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">boost::xint::invalid_modulus</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html#a16c06e28a7f483b0ca2fb5906d53278d">boost::xint::exceptions::invalid_modulus</a>
</li>
-<li>invert()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">boost::xint::detail::data_t</a>
+<li>is_bounded
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>is_exact
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>is_iec559
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa29c196c9fdae93c3c7ebc2bdcde118e">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>is_integer
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>is_modulo
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
<li>is_nan()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d">boost::xint::nothrow_integer</a>
+</li>
+<li>is_signed
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>is_specialized
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>length
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">boost::xint::detail::data_t< digit_count ></a>
</li>
</ul>
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
-<li>mAllocated
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">boost::xint::detail::data_t</a>
+<li>magnitude
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">boost::xint::detail::data_t< digit_count ></a>
</li>
<li>max()
-: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">boost::xint::strong_random_generator</a>
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">boost::xint::strong_random_generator</a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>max_exponent
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>max_exponent10
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>max_length
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">boost::xint::detail::data_t< digit_count ></a>
</li>
<li>max_value
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">boost::xint::strong_random_generator</a>
</li>
-<li>mCopies
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">boost::xint::detail::data_t</a>
-</li>
<li>min()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">boost::xint::strong_random_generator</a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>min_exponent
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae0fa48cc50faee763bb27126f48fd16c">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>min_exponent10
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
<li>min_value
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">boost::xint::strong_random_generator</a>
</li>
-<li>minimum
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">boost::xint::detail::data_t::QuickDigits</a>
-</li>
-<li>mIsNegative
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">boost::xint::detail::data_t</a>
-</li>
-<li>mLength
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">boost::xint::detail::data_t</a>
-</li>
-<li>mQuickDigits
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">boost::xint::detail::data_t</a>
-</li>
-<li>mStorage
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">boost::xint::detail::data_t</a>
-</li>
</ul>
<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
<li>nan()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">boost::xint::blockable::integer</a>
-</li>
-<li>negate()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">boost::xint::detail::data_t</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">boost::xint::nothrow_integer</a>
</li>
<li>no_strong_random()
-: <a class="el" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">boost::xint::no_strong_random</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html#ab225c7d5d10a03eac6d5e9c784135675">boost::xint::exceptions::no_strong_random</a>
</li>
<li>not_a_number()
-: <a class="el" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">boost::xint::not_a_number</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html#aa47b024550fd673bd497e0875443c67f">boost::xint::exceptions::not_a_number</a>
+</li>
+<li>nothrow_integer()
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a70c7b596f17102c6e292b8994dda76cc">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>odd()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">boost::xint::nothrow_integer</a>
</li>
<li>one()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">boost::xint::integer</a>
</li>
<li>operator%=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">boost::xint::nothrow_integer</a>
</li>
<li>operator&=()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">boost::xint::integer</a>
</li>
<li>operator()()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>
+: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">boost::xint::strong_random_generator</a>
+, <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>
, <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">boost::xint::detail::random_generator< T ></a>
-, <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">boost::xint::strong_random_generator</a>
</li>
<li>operator*=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">boost::xint::nothrow_integer</a>
</li>
<li>operator++()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">boost::xint::integer</a>
</li>
<li>operator+=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">boost::xint::nothrow_integer</a>
</li>
<li>operator--()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">boost::xint::nothrow_integer</a>
</li>
<li>operator-=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">boost::xint::nothrow_integer</a>
</li>
<li>operator/=()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">boost::xint::integer</a>
</li>
<li>operator<<()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">boost::xint::integer</a>
</li>
<li>operator<<=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">boost::xint::nothrow_integer</a>
</li>
<li>operator=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">boost::xint::nothrow_integer</a>
</li>
<li>operator>>()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">boost::xint::integer</a>
</li>
<li>operator>>=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">boost::xint::nothrow_integer</a>
</li>
<li>operator^=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">boost::xint::nothrow_integer</a>
</li>
<li>operator|=()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">boost::xint::integer</a>
</li>
<li>overflow_error()
-: <a class="el" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">boost::xint::overflow_error</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html#a767d8fbe5816d77fa0aadf9481d0bd5a">boost::xint::exceptions::overflow_error</a>
</li>
</ul>
<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
-<li>quickset()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">boost::xint::detail::data_t</a>
+<li>quiet_NaN()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
</ul>
<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
+<li>radix
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
<li>random_generator()
: <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">boost::xint::detail::random_generator< T ></a>
</li>
-<li>realloc()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">boost::xint::detail::data_t</a>
-</li>
<li>result_type
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">boost::xint::detail::base_random_generator</a>
-, <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">boost::xint::strong_random_generator</a>
+: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">boost::xint::strong_random_generator</a>
+, <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">boost::xint::detail::base_random_generator</a>
+</li>
+<li>round_error()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>round_style
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6e305ad6c75f38d0d0ba4aa15865845d">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">std::numeric_limits< boost::xint::integer ></a>
</li>
</ul>
<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
-<li>shift_left()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">boost::xint::detail::data_t</a>
-</li>
-<li>shift_right()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">boost::xint::detail::data_t</a>
-</li>
<li>sign()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">boost::xint::nothrow_integer</a>
</li>
-<li>skipLeadingZeros()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">boost::xint::detail::data_t</a>
+<li>signaling_NaN()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">std::numeric_limits< boost::xint::integer ></a>
</li>
<li>strong_random_generator()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">boost::xint::strong_random_generator</a>
</li>
-<li>subtract()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">boost::xint::detail::data_t</a>
-</li>
-<li>suggested
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">boost::xint::detail::data_t::QuickDigits</a>
-</li>
</ul>
<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>tinyness_before
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
<li>too_big()
-: <a class="el" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">boost::xint::too_big</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html#a111e2c1a759054d80afcd5fa4af2995c">boost::xint::exceptions::too_big</a>
+</li>
+<li>traps
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
</ul>
<h3><a class="anchor" id="index_z">- z -</a></h3><ul>
<li>zero()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">boost::xint::core::integer</a>
-, <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">boost::xint::detail::data_t</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_0x7e">- ~ -</a></h3><ul>
<li>~base_integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">boost::xint::detail::base_integer</a>
</li>
<li>~strong_random_generator()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">boost::xint::strong_random_generator</a>
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/functions_func.html
==============================================================================
--- sandbox/xint/doc/functions_func.html (original)
+++ sandbox/xint/doc/functions_func.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,7 +36,6 @@
<div class="tabs">
<ul>
<li>_</li>
- <li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
@@ -59,74 +58,97 @@
<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>_add()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">boost::xint::detail::base_integer</a>
+</li>
<li>_attach()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">boost::xint::detail::base_integer</a>
+</li>
+<li>_attach_0()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">boost::xint::detail::base_integer</a>
+</li>
+<li>_attach_1()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">boost::xint::detail::base_integer</a>
+</li>
+<li>_attach_n()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">boost::xint::detail::base_integer</a>
</li>
-<li>_get_data()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">boost::xint::core::base_integer</a>
+<li>_base_make_unique()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">boost::xint::detail::base_integer</a>
+</li>
+<li>_cleanup()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">boost::xint::detail::base_integer</a>
+</li>
+<li>_duplicate()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">boost::xint::detail::base_integer</a>
</li>
<li>_get_digit()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">boost::xint::detail::base_integer</a>
+</li>
+<li>_get_digits()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">boost::xint::detail::base_integer</a>
</li>
<li>_get_length()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">boost::xint::detail::base_integer</a>
</li>
-<li>_init()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">boost::xint::core::integer</a>
+<li>_get_negative()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">boost::xint::detail::base_integer</a>
+</li>
+<li>_is_nan()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">boost::xint::detail::base_integer</a>
</li>
<li>_is_unique()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">boost::xint::detail::base_integer</a>
+</li>
+<li>_is_zero()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">boost::xint::detail::base_integer</a>
</li>
<li>_make_unique()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">boost::xint::nothrow_integer</a>
+</li>
+<li>_realloc()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">boost::xint::detail::base_integer</a>
+</li>
+<li>_set_n()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">boost::xint::detail::base_integer</a>
</li>
<li>_set_negative()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">boost::xint::detail::base_integer</a>
</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
-<li>add()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">boost::xint::detail::data_t</a>
+<li>_shift_left()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">boost::xint::detail::base_integer</a>
</li>
-<li>alloc()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">boost::xint::detail::data_t</a>
+<li>_shift_right()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">boost::xint::detail::base_integer</a>
</li>
-<li>attach()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">boost::xint::detail::data_t</a>
+<li>_subtract()
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">boost::xint::detail::base_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
<li>base_integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">boost::xint::detail::base_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>cannot_represent()
-: <a class="el" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">boost::xint::cannot_represent</a>
-</li>
-<li>copy()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">boost::xint::detail::data_t</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html#a0968d8ac61c24529816bcaf69d155b75">boost::xint::exceptions::cannot_represent</a>
</li>
</ul>
<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
-<li>data_t()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">boost::xint::detail::data_t</a>
-</li>
-<li>detach()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">boost::xint::detail::data_t</a>
+<li>denorm_min()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
<li>divide_by_zero()
-: <a class="el" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">boost::xint::divide_by_zero</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html#aaff4d720e4a134315acde919ff06e640">boost::xint::exceptions::divide_by_zero</a>
</li>
</ul>
@@ -135,157 +157,165 @@
<li>entropy()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">boost::xint::strong_random_generator</a>
</li>
+<li>epsilon()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
<li>even()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>hex_digits()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
+<li>infinity()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
<li>integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#acade75e4974489026f1eeb6945c9779a">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ad0f5b3fdf28a3e2892198dd1c39afe82">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">boost::xint::integer</a>
+</li>
+<li>invalid_argument()
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html#a8ba3e56172de34c772b287ce8e325f32">boost::xint::exceptions::invalid_argument</a>
</li>
<li>invalid_base()
-: <a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">boost::xint::invalid_base</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html#a4647071020547bd103ee885bec7edffa">boost::xint::exceptions::invalid_base</a>
</li>
<li>invalid_digit()
-: <a class="el" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">boost::xint::invalid_digit</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html#abcdf43b30c3910dde89e406ca802eacc">boost::xint::exceptions::invalid_digit</a>
</li>
<li>invalid_modulus()
-: <a class="el" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">boost::xint::invalid_modulus</a>
-</li>
-<li>invert()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">boost::xint::detail::data_t</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html#a16c06e28a7f483b0ca2fb5906d53278d">boost::xint::exceptions::invalid_modulus</a>
</li>
<li>is_nan()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
<li>max()
-: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">boost::xint::strong_random_generator</a>
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">boost::xint::strong_random_generator</a>
</li>
<li>min()
-: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">boost::xint::strong_random_generator</a>
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">boost::xint::strong_random_generator</a>
</li>
</ul>
<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
<li>nan()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">boost::xint::blockable::integer</a>
-</li>
-<li>negate()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">boost::xint::detail::data_t</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">boost::xint::nothrow_integer</a>
</li>
<li>no_strong_random()
-: <a class="el" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">boost::xint::no_strong_random</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html#ab225c7d5d10a03eac6d5e9c784135675">boost::xint::exceptions::no_strong_random</a>
</li>
<li>not_a_number()
-: <a class="el" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">boost::xint::not_a_number</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html#aa47b024550fd673bd497e0875443c67f">boost::xint::exceptions::not_a_number</a>
+</li>
+<li>nothrow_integer()
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a70c7b596f17102c6e292b8994dda76cc">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>odd()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">boost::xint::nothrow_integer</a>
</li>
<li>one()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">boost::xint::integer</a>
</li>
<li>operator%=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">boost::xint::nothrow_integer</a>
</li>
<li>operator&=()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">boost::xint::integer</a>
</li>
<li>operator()()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>
+: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">boost::xint::strong_random_generator</a>
+, <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>
, <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">boost::xint::detail::random_generator< T ></a>
-, <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">boost::xint::strong_random_generator</a>
</li>
<li>operator*=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">boost::xint::nothrow_integer</a>
</li>
<li>operator++()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">boost::xint::integer</a>
</li>
<li>operator+=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">boost::xint::nothrow_integer</a>
</li>
<li>operator--()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">boost::xint::nothrow_integer</a>
</li>
<li>operator-=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">boost::xint::nothrow_integer</a>
</li>
<li>operator/=()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">boost::xint::integer</a>
</li>
<li>operator<<()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">boost::xint::integer</a>
</li>
<li>operator<<=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">boost::xint::nothrow_integer</a>
</li>
<li>operator=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">boost::xint::nothrow_integer</a>
</li>
<li>operator>>()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">boost::xint::integer</a>
</li>
<li>operator>>=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">boost::xint::nothrow_integer</a>
</li>
<li>operator^=()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">boost::xint::nothrow_integer</a>
</li>
<li>operator|=()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">boost::xint::nothrow_integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">boost::xint::integer</a>
</li>
<li>overflow_error()
-: <a class="el" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">boost::xint::overflow_error</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html#a767d8fbe5816d77fa0aadf9481d0bd5a">boost::xint::exceptions::overflow_error</a>
</li>
</ul>
<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
-<li>quickset()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">boost::xint::detail::data_t</a>
+<li>quiet_NaN()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
</ul>
@@ -294,61 +324,53 @@
<li>random_generator()
: <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">boost::xint::detail::random_generator< T ></a>
</li>
-<li>realloc()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">boost::xint::detail::data_t</a>
+<li>round_error()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">std::numeric_limits< boost::xint::integer ></a>
</li>
</ul>
<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
-<li>shift_left()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">boost::xint::detail::data_t</a>
-</li>
-<li>shift_right()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">boost::xint::detail::data_t</a>
-</li>
<li>sign()
-: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">boost::xint::blockable::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">boost::xint::nothrow_integer</a>
</li>
-<li>skipLeadingZeros()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">boost::xint::detail::data_t</a>
+<li>signaling_NaN()
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">std::numeric_limits< boost::xint::integer ></a>
</li>
<li>strong_random_generator()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">boost::xint::strong_random_generator</a>
</li>
-<li>subtract()
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">boost::xint::detail::data_t</a>
-</li>
</ul>
<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
<li>too_big()
-: <a class="el" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">boost::xint::too_big</a>
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html#a111e2c1a759054d80afcd5fa4af2995c">boost::xint::exceptions::too_big</a>
</li>
</ul>
<h3><a class="anchor" id="index_z">- z -</a></h3><ul>
<li>zero()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">boost::xint::core::integer</a>
-, <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">boost::xint::detail::data_t</a>
-, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">boost::xint::blockable::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">boost::xint::nothrow_integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_0x7e">- ~ -</a></h3><ul>
<li>~base_integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">boost::xint::core::base_integer</a>
+: <a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">boost::xint::detail::base_integer</a>
</li>
<li>~strong_random_generator()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">boost::xint::strong_random_generator</a>
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/functions_type.html
==============================================================================
--- sandbox/xint/doc/functions_type.html (original)
+++ sandbox/xint/doc/functions_type.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -43,12 +43,12 @@
: <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">boost::xint::detail::random_generator< T ></a>
</li>
<li>result_type
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">boost::xint::detail::base_random_generator</a>
-, <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">boost::xint::strong_random_generator</a>
+: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">boost::xint::strong_random_generator</a>
+, <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">boost::xint::detail::base_random_generator</a>
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/functions_vars.html
==============================================================================
--- sandbox/xint/doc/functions_vars.html (original)
+++ sandbox/xint/doc/functions_vars.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -33,60 +33,174 @@
<li>Typedefs</li>
</ul>
</div>
+ <div class="tabs">
+ <ul>
+ <li>c</li>
+ <li>d</li>
+ <li>g</li>
+ <li>h</li>
+ <li>i</li>
+ <li>l</li>
+ <li>m</li>
+ <li>r</li>
+ <li>t</li>
+ </ul>
+ </div>
</div>
<div class="contents">
- <ul>
-<li>count
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">boost::xint::detail::data_t::QuickDigits</a>
+
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
+<li>copies
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">boost::xint::detail::data_t< digit_count ></a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
<li>digits
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">boost::xint::detail::data_t</a>
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
+<li>digits10
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
<li>gen
: <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">boost::xint::detail::random_generator< T ></a>
</li>
<li>genobj
: <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">boost::xint::detail::random_generator< T ></a>
</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
+<li>has_denorm
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>has_denorm_loss
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">std::numeric_limits< boost::xint::integer ></a>
+</li>
<li>has_fixed_range
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">boost::xint::strong_random_generator</a>
</li>
-<li>intbits
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">boost::xint::detail::data_t::QuickDigits</a>
+<li>has_infinity
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#afc2b5e56fb2057c2459180219491d930">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>has_quiet_NaN
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>has_signaling_NaN
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">std::numeric_limits< boost::xint::integer ></a>
</li>
-<li>mAllocated
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">boost::xint::detail::data_t</a>
+</ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
+<li>is_bounded
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>is_exact
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>is_iec559
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa29c196c9fdae93c3c7ebc2bdcde118e">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>is_integer
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>is_modulo
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>is_signed
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>is_specialized
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">std::numeric_limits< boost::xint::integer ></a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>length
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">boost::xint::detail::data_t< digit_count ></a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
+<li>magnitude
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">boost::xint::detail::data_t< digit_count ></a>
+</li>
+<li>max_exponent
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>max_exponent10
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>max_length
+: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">boost::xint::detail::data_t< digit_count ></a>
</li>
<li>max_value
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">boost::xint::strong_random_generator</a>
</li>
-<li>mCopies
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">boost::xint::detail::data_t</a>
+<li>min_exponent
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae0fa48cc50faee763bb27126f48fd16c">std::numeric_limits< boost::xint::nothrow_integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">std::numeric_limits< boost::xint::integer ></a>
+</li>
+<li>min_exponent10
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
<li>min_value
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">boost::xint::strong_random_generator</a>
</li>
-<li>minimum
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">boost::xint::detail::data_t::QuickDigits</a>
-</li>
-<li>mIsNegative
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">boost::xint::detail::data_t</a>
-</li>
-<li>mLength
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">boost::xint::detail::data_t</a>
-</li>
-<li>mQuickDigits
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">boost::xint::detail::data_t</a>
-</li>
-<li>mStorage
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">boost::xint::detail::data_t</a>
+</ul>
+
+
+<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
+<li>radix
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>round_style
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6e305ad6c75f38d0d0ba4aa15865845d">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
-<li>suggested
-: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">boost::xint::detail::data_t::QuickDigits</a>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>tinyness_before
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">std::numeric_limits< boost::xint::nothrow_integer ></a>
+</li>
+<li>traps
+: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">std::numeric_limits< boost::xint::integer ></a>
+, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">std::numeric_limits< boost::xint::nothrow_integer ></a>
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/gcd_8cpp.html
==============================================================================
--- sandbox/xint/doc/gcd_8cpp.html (original)
+++ sandbox/xint/doc/gcd_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,27 +36,22 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core::gcd</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core::lcm</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint::lcm</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core::invmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint::invmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Greatest Common Denominator and Least Common Multple. </p>
@@ -75,7 +70,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="gcd_8cpp_source.html#l00056">56</a> of file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
+<p>Definition at line <a class="el" href="gcd_8cpp_source.html#l00055">55</a> of file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
</div>
</div>
@@ -90,7 +85,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="gcd_8cpp_source.html#l00056">56</a> of file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
+<p>Definition at line <a class="el" href="gcd_8cpp_source.html#l00055">55</a> of file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
</div>
</div>
@@ -105,12 +100,12 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="gcd_8cpp_source.html#l00056">56</a> of file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
+<p>Definition at line <a class="el" href="gcd_8cpp_source.html#l00055">55</a> of file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/gcd_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/gcd_8cpp_source.html (original)
+++ sandbox/xint/doc/gcd_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,97 +41,95 @@
<a name="l00021"></a>00021
<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
-<a name="l00024"></a>00024 <span class="keyword">namespace </span>core {
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>{
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="keyword">struct </span>gcd_core {
-<a name="l00028"></a>00028 gcd_core(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m): <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>(integer::one()),
-<a name="l00029"></a>00029 <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>(integer::zero()), <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>(n)
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 integer t1=m, t2=n-<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>(), t3=m;
-<a name="l00032"></a>00032 <span class="keywordflow">do</span> {
-<a name="l00033"></a>00033 <span class="keywordflow">do</span> {
-<a name="l00034"></a>00034 <span class="keywordflow">if</span> (<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>.even()) {
-<a name="l00035"></a>00035 <span class="keywordflow">if</span> (<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>.odd() || <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>.odd()) { <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>+=m; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>+=n; }
-<a name="l00036"></a>00036 <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a> >>= 1;
-<a name="l00037"></a>00037 <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a> >>= 1;
-<a name="l00038"></a>00038 <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a> >>= 1;
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (t3.even() || <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a> < t3) {
-<a name="l00042"></a>00042 <span class="comment">// Swap the u's with the t's</span>
-<a name="l00043"></a>00043 std::swap(<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>, t1);
-<a name="l00044"></a>00044 std::swap(<a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>, t2);
-<a name="l00045"></a>00045 std::swap(<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>, t3);
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047 } <span class="keywordflow">while</span> (<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>.even());
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keywordflow">while</span> (<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a> < t1 || <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a> < t2) { <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>+=m; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>+=n; }
-<a name="l00050"></a>00050 <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>-=t1; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>-=t2; <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>-=t3;
-<a name="l00051"></a>00051 } <span class="keywordflow">while</span> (t3 > 0);
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordflow">while</span> (<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a> >= m && <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a> >= n) { <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>-=m; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>-=n; }
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a><a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">00056</a> integer <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>, <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>, <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>;
-<a name="l00057"></a>00057 };
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 } <span class="comment">// namespace</span>
-<a name="l00060"></a>00060
-<a name="l00068"></a>00068 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00069"></a>00069 <span class="keywordtype">int</span> sign1=num1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), sign2=num2.sign();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (sign1==0 && sign2==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00071"></a>00071 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> num2;
-<a name="l00072"></a>00072 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> num1;
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 integer n(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(num1)), m(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(num2));
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keywordtype">size_t</span> k=0;
-<a name="l00077"></a>00077 <span class="keywordflow">while</span> (n.even() && m.even()) { ++k; n >>= 1; m >>= 1; }
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 gcd_core core(n, m);
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (core.u3.sign() != 0) <span class="keywordflow">return</span> core.u3 << k;
-<a name="l00082"></a>00082 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() << k;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00093"></a>00093 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (num1.sign() == 0 || num2.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00095"></a>00095 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(num1 * num2) / <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(num1, num2);
-<a name="l00096"></a>00096 }
-<a name="l00097"></a>00097
-<a name="l00108"></a>00108 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00109"></a>00109 <span class="comment">// Calculates the modular inverse of n mod m, or (n^(-1)) mod m</span>
-<a name="l00110"></a>00110 <span class="comment">// Defined as b, where n*b corresponds to 1 (mod m)</span>
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (m < <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">throw</span> invalid_modulus();
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keywordtype">int</span> sign=n.sign();
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (sign==0) {
-<a name="l00115"></a>00115 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00116"></a>00116 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.sign() < 0) {
-<a name="l00117"></a>00117 integer _n(n);
-<a name="l00118"></a>00118 _n._set_negative(<span class="keyword">false</span>);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 integer nn=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(_n, m);
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (nn.sign()==0) <span class="keywordflow">return</span> nn;
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 nn._set_negative(<span class="keyword">true</span>);
-<a name="l00124"></a>00124 <span class="keywordflow">return</span> nn + m;
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (n.even() && m.even()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 gcd_core core(n, m);
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (core.u3 != <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> core.u1;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 } <span class="comment">// namespace core</span>
-<a name="l00136"></a>00136 } <span class="comment">// namespace xint</span>
-<a name="l00137"></a>00137 } <span class="comment">// namespace boost</span>
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>{
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">struct </span>gcd_core {
+<a name="l00027"></a>00027 gcd_core(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m): <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>(integer::one()),
+<a name="l00028"></a>00028 <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>(integer::zero()), <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>(n)
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030 integer t1=m, t2=n-<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>(), t3=m;
+<a name="l00031"></a>00031 <span class="keywordflow">do</span> {
+<a name="l00032"></a>00032 <span class="keywordflow">do</span> {
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>.even()) {
+<a name="l00034"></a>00034 <span class="keywordflow">if</span> (<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>.odd() || <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>.odd()) { <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>+=m; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>+=n; }
+<a name="l00035"></a>00035 <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a> >>= 1;
+<a name="l00036"></a>00036 <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a> >>= 1;
+<a name="l00037"></a>00037 <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a> >>= 1;
+<a name="l00038"></a>00038 }
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (t3.even() || <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a> < t3) {
+<a name="l00041"></a>00041 <span class="comment">// Swap the u's with the t's</span>
+<a name="l00042"></a>00042 std::swap(<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>, t1);
+<a name="l00043"></a>00043 std::swap(<a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>, t2);
+<a name="l00044"></a>00044 std::swap(<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>, t3);
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046 } <span class="keywordflow">while</span> (<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>.even());
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keywordflow">while</span> (<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a> < t1 || <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a> < t2) { <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>+=m; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>+=n; }
+<a name="l00049"></a>00049 <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>-=t1; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>-=t2; <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>-=t3;
+<a name="l00050"></a>00050 } <span class="keywordflow">while</span> (t3 > 0);
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keywordflow">while</span> (<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a> >= m && <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a> >= n) { <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>-=m; <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>-=n; }
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054
+<a name="l00055"></a><a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">00055</a> integer <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>, <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>, <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>;
+<a name="l00056"></a>00056 };
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 } <span class="comment">// namespace</span>
+<a name="l00059"></a>00059
+<a name="l00067"></a>00067 integer <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00068"></a>00068 <span class="keywordtype">int</span> sign1=num1.<a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>(), sign2=num2.sign();
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (sign1==0 && sign2==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
+<a name="l00070"></a>00070 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> num2;
+<a name="l00071"></a>00071 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> num1;
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 integer n(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(num1)), m(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(num2));
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keywordtype">size_t</span> k=0;
+<a name="l00076"></a>00076 <span class="keywordflow">while</span> (n.even() && m.even()) { ++k; n >>= 1; m >>= 1; }
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 gcd_core core(n, m);
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="keywordflow">if</span> (core.u3.sign() != 0) <span class="keywordflow">return</span> core.u3 << k;
+<a name="l00081"></a>00081 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() << k;
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083
+<a name="l00092"></a>00092 integer <a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00093"></a>00093 <span class="keywordflow">if</span> (num1.sign() == 0 || num2.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
+<a name="l00094"></a>00094 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(num1 * num2) / <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(num1, num2);
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00107"></a>00107 integer <a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00108"></a>00108 <span class="comment">// Calculates the modular inverse of n mod m, or (n^(-1)) mod m</span>
+<a name="l00109"></a>00109 <span class="comment">// Defined as b, where n*b corresponds to 1 (mod m)</span>
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (m < <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()) <span class="keywordflow">throw</span> exceptions::invalid_modulus();
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="keywordtype">int</span> sign=n.sign();
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (sign==0) {
+<a name="l00114"></a>00114 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
+<a name="l00115"></a>00115 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.sign() < 0) {
+<a name="l00116"></a>00116 integer _n(n);
+<a name="l00117"></a>00117 _n._set_negative(<span class="keyword">false</span>);
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 integer nn=<a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(_n, m);
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (nn.sign()==0) <span class="keywordflow">return</span> nn;
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 nn._set_negative(<span class="keyword">true</span>);
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> nn + m;
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (n.even() && m.even()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 gcd_core core(n, m);
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (core.u3 != <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
+<a name="l00131"></a>00131 <span class="keywordflow">return</span> core.u1;
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 } <span class="comment">// namespace xint</span>
+<a name="l00135"></a>00135 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/globals.html
==============================================================================
--- sandbox/xint/doc/globals.html (original)
+++ sandbox/xint/doc/globals.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -37,9 +37,6 @@
<li>ddPowerOfTwo
: <a class="el" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">monty.cpp</a>
</li>
-<li>mOldState
-: <a class="el" href="exception__blocker_8cpp.html#a50f7131c1e1f52ac26fb604e489b0dbe">exception_blocker.cpp</a>
-</li>
<li>mTable
: <a class="el" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">monty.cpp</a>
</li>
@@ -54,7 +51,7 @@
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/globals_defs.html
==============================================================================
--- sandbox/xint/doc/globals_defs.html (original)
+++ sandbox/xint/doc/globals_defs.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -39,7 +39,7 @@
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/globals_vars.html
==============================================================================
--- sandbox/xint/doc/globals_vars.html (original)
+++ sandbox/xint/doc/globals_vars.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -34,9 +34,6 @@
</div>
<div class="contents">
<ul>
-<li>mOldState
-: <a class="el" href="exception__blocker_8cpp.html#a50f7131c1e1f52ac26fb604e489b0dbe">exception_blocker.cpp</a>
-</li>
<li>mTable
: <a class="el" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">monty.cpp</a>
</li>
@@ -51,7 +48,7 @@
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/hierarchy.html
==============================================================================
--- sandbox/xint/doc/hierarchy.html (original)
+++ sandbox/xint/doc/hierarchy.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,31 +28,32 @@
</div>
<div class="contents">
<h1>Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
-<li><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a><ul>
-<li><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a><ul>
+<li><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></li>
</ul>
</li>
<li><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a><ul>
<li><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></li>
</ul>
</li>
-<li><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">boost::xint::cannot_represent</a></li>
-<li><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">boost::xint::divide_by_zero</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">boost::xint::invalid_modulus</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">boost::xint::no_strong_random</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1not__a__number.html">boost::xint::not_a_number</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1overflow__error.html">boost::xint::overflow_error</a></li>
-<li><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">boost::xint::exceptions::cannot_represent</a></li>
+<li><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">boost::xint::exceptions::divide_by_zero</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">boost::xint::exceptions::invalid_argument</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">boost::xint::exceptions::invalid_base</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">boost::xint::exceptions::invalid_digit</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">boost::xint::exceptions::invalid_modulus</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">boost::xint::exceptions::no_strong_random</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">boost::xint::exceptions::not_a_number</a></li>
+<li><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></li>
+<li><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">boost::xint::exceptions::overflow_error</a></li>
<li><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></li>
-<li><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">boost::xint::detail::token</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1too__big.html">boost::xint::too_big</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">boost::xint::exceptions::too_big</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/history.html
==============================================================================
--- sandbox/xint/doc/history.html (original)
+++ sandbox/xint/doc/history.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,7 +36,7 @@
</ul>
<p><b>2010-04-</b>?? (updated through 10th)</p>
<ul>
-<li>Major refactoring, separating xint::integer into two classes, each with their own namespace (xint::core and xint::blockable), and their own functions.</li>
+<li>Major refactoring, separating xint::integer and xint::nothrow_integer and eliminating the exception-blocking functions.</li>
<li>Fixed problem with MSVC 9.</li>
<li>Major overhaul of the division function.</li>
<li>All test functions now use Boost.Test.</li>
@@ -46,7 +46,7 @@
<li>Fixed minor stream-output formatting problem (the code wasn't aware of the <code>showpos</code> stream option). </li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/history_8dox.html
==============================================================================
--- sandbox/xint/doc/history_8dox.html (original)
+++ sandbox/xint/doc/history_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/history.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/index.html
==============================================================================
--- sandbox/xint/doc/index.html (original)
+++ sandbox/xint/doc/index.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -35,13 +35,14 @@
</ul>
<h2><a class="anchor" id="how">
How do I use it?</a></h2>
-<p>That's the best part. If you've installed or compiled the Boost library already, all you need to do is add <code>#include <<a class="el" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></code> at the top of your source code file, and declare your variable as type <code><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">boost::xint::core::integer</a></code>. Then just use it the way you'd use any integer. If you need something more advanced, take a look in <a class="el" href="namespaceboost_1_1xint.html">the reference section</a> and you just might find it.</p>
+<p>That's the best part. If you've installed or compiled the Boost library already, all you need to do is add <code>#include <<a class="el" href="xint_8hpp.html" title="This is the include-everything header.">boost/xint/xint.hpp</a>></code> at the top of your source code file, throw in a <code>using</code> line to say which type you want to use, and declare your variable as type <a class="el" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a>. Then just use it the way you'd use any integer. If you need something more advanced, take a look in <a class="el" href="namespaceboost_1_1xint.html">the reference section</a> and you just might find it.</p>
<p>More information on how to use it can be found on the pages listed below.</p>
<p>Detailed Usage Information:</p>
<ul>
<li><a class="el" href="nan.html">The Not-a-Number Value</a></li>
+<li><a class="el" href="zero.html">Zero and "Negative Zero"</a></li>
<li><a class="el" href="primes.html">Generating Prime Numbers</a> (with example code)</li>
-<li><a class="el" href="exceptions.html">Exceptions and Exception-Blocking</a> (with example code)</li>
+<li><a class="el" href="exceptions.html">Exceptions and the <code>nothrow_integer</code> type.</a> (with example code)</li>
<li><a class="el" href="random.html">The XInt Random Number System</a></li>
</ul>
<p>Compile-Time Options:</p>
@@ -63,7 +64,7 @@
<li><a class="el" href="ex__fibonacci.html">Fibonacci Numbers</a> </li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/index_8dox.html
==============================================================================
--- sandbox/xint/doc/index_8dox.html (original)
+++ sandbox/xint/doc/index_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/index.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/integer_8cpp.html
==============================================================================
--- sandbox/xint/doc/integer_8cpp.html (original)
+++ sandbox/xint/doc/integer_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,12 +36,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
</table>
@@ -50,7 +45,7 @@
<p>Definition in file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/integer_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/integer_8cpp_source.html (original)
+++ sandbox/xint/doc/integer_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,215 +38,130 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <memory></span> <span class="comment">// for auto_ptr</span>
<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="preprocessor">#ifdef XINT_THREADSAFE</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor"> #define XINT_DISABLE_COPY_ON_WRITE</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span>
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>boost {
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>xint {
-<a name="l00027"></a>00027 <span class="keyword">namespace </span>core {
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>{
-<a name="l00030"></a>00030 std::auto_ptr<integer> cZero, cOne;
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>{
+<a name="l00025"></a>00025 std::auto_ptr<integer> cZero, cOne;
+<a name="l00026"></a>00026 }
+<a name="l00027"></a>00027
+<a name="l00029"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">00029</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>() {
+<a name="l00030"></a>00030 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>();
<a name="l00031"></a>00031 }
<a name="l00032"></a>00032
-<a name="l00034"></a>00034 <span class="comment">// The base_integer class</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">00036</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">base_integer::~base_integer</a>() {
-<a name="l00037"></a>00037 <span class="keywordflow">if</span> (data && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()) <span class="keyword">delete</span> data;
-<a name="l00038"></a>00038 }
-<a name="l00039"></a>00039
-<a name="l00040"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">00040</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">base_integer::_get_digit</a>(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{
-<a name="l00041"></a>00041 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00044"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">00044</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">base_integer::_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{
-<a name="l00045"></a>00045 <span class="keywordflow">if</span> (index >= data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <span class="keywordflow">return</span> 0;
-<a name="l00046"></a>00046 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048
-<a name="l00049"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">00049</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">base_integer::_get_length</a>()<span class="keyword"> const </span>{
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">00053</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">base_integer::_attach</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *new_data) {
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (data && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()) <span class="keyword">delete</span> data;
-<a name="l00055"></a>00055 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span> <span class="keywordflow">if</span> (new_data==0 || new_data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==0) data=new_data;
-<a name="l00057"></a>00057 <span class="keywordflow">else</span> {
-<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
-<a name="l00059"></a>00059 data=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(new_data);
-<a name="l00060"></a>00060 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00061"></a>00061 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064 <span class="preprocessor"> #else</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span> data=new_data;
-<a name="l00066"></a>00066 <span class="preprocessor"> #endif</span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span> <span class="keywordflow">if</span> (data) data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>();
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00070"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">00070</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">base_integer::_attach</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& copy) {
-<a name="l00071"></a>00071 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(copy.data);
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">00074</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">base_integer::_is_unique</a>()<span class="keyword"> const </span>{
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> (!data || data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00079"></a>00079 <span class="comment">// The core integer class</span>
-<a name="l00080"></a>00080
-<a name="l00082"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">00082</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>() {
-<a name="l00083"></a>00083 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>();
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00097"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">00097</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) {
-<a name="l00098"></a>00098 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(b);
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00111"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad0f5b3fdf28a3e2892198dd1c39afe82">00111</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>& b) {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> (b.<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a>();
-<a name="l00113"></a>00113 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(b);
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00136"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">00136</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
-<a name="l00137"></a>00137 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(str, base));
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">00140</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init) {
-<a name="l00141"></a>00141 <span class="keywordflow">try</span> {
-<a name="l00142"></a>00142 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(init));
-<a name="l00143"></a>00143 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00144"></a>00144 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147
-<a name="l00148"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">00148</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c) {
-<a name="l00149"></a>00149 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00152"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">00152</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(boost::uintmax_t n) {
-<a name="l00153"></a>00153 <span class="keywordflow">try</span> {
-<a name="l00154"></a>00154 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(n, <span class="keyword">true</span>));
-<a name="l00155"></a>00155 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00156"></a>00156 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00160"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">00160</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">integer::_make_unique</a>() {
-<a name="l00161"></a>00161 <span class="keywordflow">try</span> {
-<a name="l00162"></a>00162 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>()) <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()));
-<a name="l00163"></a>00163 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00164"></a>00164 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167
-<a name="l00168"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">00168</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">integer::_set_negative</a>(<span class="keywordtype">bool</span> negative) {
-<a name="l00169"></a>00169 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative != negative) {
-<a name="l00170"></a>00170 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00171"></a>00171 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *p=<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00172"></a>00172 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=negative;
-<a name="l00173"></a>00173 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00181"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">00181</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e" title="Tests the lowest bit of *this to determine oddness.">integer::odd</a>()<span class="keyword"> const </span>{
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==1);
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184
-<a name="l00189"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">00189</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3" title="Tests the lowest bit of *this to determine evenness.">integer::even</a>()<span class="keyword"> const </span>{
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==0);
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00198"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">00198</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">integer::sign</a>()<span class="keyword"> const </span>{
-<a name="l00199"></a>00199 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()==1 && <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0)==0) <span class="keywordflow">return</span> 0;
-<a name="l00200"></a>00200 <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative ? -1 : 1);
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00208"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">00208</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43" title="Tells you roughly how large an integer is.">integer::hex_digits</a>()<span class="keyword"> const </span>{
-<a name="l00209"></a>00209 <span class="keywordtype">size_t</span> bits=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(*<span class="keyword">this</span>);
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> (bits+3)/4; <span class="comment">// Four bits per hex digit, rounded up</span>
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">00213</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& addend) {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() < 0) == (addend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() < 0)
-<a name="l00215"></a>00215 && <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() >= addend.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>())
-<a name="l00216"></a>00216 {
-<a name="l00217"></a>00217 <span class="comment">// Fast in-place add</span>
-<a name="l00218"></a>00218 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00219"></a>00219 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(addend.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>());
-<a name="l00220"></a>00220 } <span class="keywordflow">else</span> {
-<a name="l00221"></a>00221 <span class="comment">// This works for all cases</span>
-<a name="l00222"></a>00222 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(*<span class="keyword">this</span>, addend);
-<a name="l00223"></a>00223 }
-<a name="l00224"></a>00224 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00227"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">00227</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& subtrahend) {
-<a name="l00228"></a>00228 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() >= 0 && subtrahend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() >= 0 && *<span class="keyword">this</span> >= subtrahend) {
-<a name="l00229"></a>00229 <span class="comment">// Fast in-place subtract</span>
-<a name="l00230"></a>00230 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00231"></a>00231 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(subtrahend.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>());
-<a name="l00232"></a>00232 } <span class="keywordflow">else</span> {
-<a name="l00233"></a>00233 <span class="comment">// This works for all cases</span>
-<a name="l00234"></a>00234 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(*<span class="keyword">this</span>, subtrahend);
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238
-<a name="l00239"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">00239</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c) {
-<a name="l00240"></a>00240 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
-<a name="l00241"></a>00241 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00242"></a>00242 }
-<a name="l00243"></a>00243
-<a name="l00244"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">00244</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00245"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">00245</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00246"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">00246</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00247"></a>00247
-<a name="l00248"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">00248</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00249"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">00249</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00250"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab04d9f5bfe1d4b9d10acf4cf3f8a6115">00250</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> s; }
-<a name="l00251"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab30e34305c00e55f9ea0012085c49c9d">00251</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> s; }
-<a name="l00252"></a>00252
-<a name="l00253"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">00253</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">integer::operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(*<span class="keyword">this</span>, shift); }
-<a name="l00254"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">00254</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">integer::operator>></a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(*<span class="keyword">this</span>, shift); }
-<a name="l00255"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">00255</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00256"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">00256</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00257"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">00257</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00258"></a>00258
-<a name="l00259"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">00259</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>) {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (shift>0) {
-<a name="l00261"></a>00261 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00262"></a>00262 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(shift);
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266
-<a name="l00267"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">00267</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>) {
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (shift>0) {
-<a name="l00269"></a>00269 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00270"></a>00270 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(shift);
-<a name="l00271"></a>00271 }
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274
-<a name="l00275"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">00275</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>() {
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>(0));
-<a name="l00277"></a>00277 <span class="keywordflow">return</span> *cZero;
-<a name="l00278"></a>00278 }
-<a name="l00279"></a>00279
-<a name="l00280"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">00280</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() {
-<a name="l00281"></a>00281 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>(1));
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> *cOne;
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 } <span class="comment">// namespace core</span>
-<a name="l00286"></a>00286 } <span class="comment">// namespace xint</span>
-<a name="l00287"></a>00287 } <span class="comment">// namespace boost</span>
+<a name="l00044"></a><a class="code" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">00044</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b) {
+<a name="l00045"></a>00045 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(b);
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00058"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acc0aea50091f653fb983373e12fc815e">00058</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) {
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (b.<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">exceptions::not_a_number</a>();
+<a name="l00060"></a>00060 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(b);
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00084"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">00084</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00085"></a>00085 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(str, base));
+<a name="l00086"></a>00086 }
+<a name="l00087"></a>00087
+<a name="l00088"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">00088</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">integer::_make_unique</a>() {
+<a name="l00089"></a>00089 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>();
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00096"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">00096</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1" title="Tests the lowest bit of *this to determine oddness.">integer::odd</a>()<span class="keyword"> const </span>{
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(0) & 0x01)==1);
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099
+<a name="l00104"></a><a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">00104</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb" title="Tests the lowest bit of *this to determine evenness.">integer::even</a>()<span class="keyword"> const </span>{
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(0) & 0x01)==0);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00117"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae">00117</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">integer::sign</a>(<span class="keywordtype">bool</span> signed_zero)<span class="keyword"> const </span>{
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (!signed_zero && <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>()) <span class="keywordflow">return</span> 0;
+<a name="l00119"></a>00119 <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() ? -1 : 1);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121
+<a name="l00127"></a><a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">00127</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f" title="Tells you roughly how large an integer is.">integer::hex_digits</a>()<span class="keyword"> const </span>{
+<a name="l00128"></a>00128 <span class="keywordtype">size_t</span> bits=<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(*<span class="keyword">this</span>);
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> (bits+3)/4; <span class="comment">// Four bits per hex digit, rounded up</span>
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131
+<a name="l00132"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">00132</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& addend) {
+<a name="l00133"></a>00133 <span class="keywordflow">if</span> ((<a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>() < 0) == (addend.<a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>() < 0)
+<a name="l00134"></a>00134 && <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>() >= addend.<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>())
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <span class="comment">// Fast in-place add</span>
+<a name="l00137"></a>00137 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
+<a name="l00138"></a>00138 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a>(addend);
+<a name="l00139"></a>00139 } <span class="keywordflow">else</span> {
+<a name="l00140"></a>00140 <span class="comment">// This works for all cases</span>
+<a name="l00141"></a>00141 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(*<span class="keyword">this</span>, addend);
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">00146</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& subtrahend) {
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>() >= 0 && subtrahend.<a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>() >= 0 && *<span class="keyword">this</span> >= subtrahend) {
+<a name="l00148"></a>00148 <span class="comment">// Fast in-place subtract</span>
+<a name="l00149"></a>00149 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
+<a name="l00150"></a>00150 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a>(subtrahend);
+<a name="l00151"></a>00151 } <span class="keywordflow">else</span> {
+<a name="l00152"></a>00152 <span class="comment">// This works for all cases</span>
+<a name="l00153"></a>00153 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(*<span class="keyword">this</span>, subtrahend);
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157
+<a name="l00158"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">00158</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> &c) {
+<a name="l00159"></a>00159 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(c);
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162
+<a name="l00163"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">00163</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00164"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">00164</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">00165</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00166"></a>00166
+<a name="l00167"></a><a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">00167</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00168"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">00168</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00169"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">00169</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00170"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">00170</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00171"></a>00171
+<a name="l00172"></a><a class="code" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">00172</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">integer::operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00173"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">00173</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">integer::operator>></a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00174"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">00174</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00175"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">00175</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00176"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">00176</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00177"></a>00177
+<a name="l00178"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">00178</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00179"></a>00179 <span class="keywordflow">if</span> (shift>0) {
+<a name="l00180"></a>00180 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
+<a name="l00181"></a>00181 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a>(shift);
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185
+<a name="l00186"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">00186</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (shift>0) {
+<a name="l00188"></a>00188 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
+<a name="l00189"></a>00189 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a>(shift);
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193
+<a name="l00194"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">00194</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>() {
+<a name="l00195"></a>00195 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>(0));
+<a name="l00196"></a>00196 <span class="keywordflow">return</span> *cZero;
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198
+<a name="l00199"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">00199</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() {
+<a name="l00200"></a>00200 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>(1));
+<a name="l00201"></a>00201 <span class="keywordflow">return</span> *cOne;
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 } <span class="comment">// namespace xint</span>
+<a name="l00205"></a>00205 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/integer_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/integer_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: integer.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>integer.hpp File Reference</h1>
+<p>Declares the core integer type.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The core integer class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits< boost::xint::integer ></a></td></tr>
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint::abs</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint::negate</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint::sqr</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint::pow2</a> (size_t e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint::factorial</a> (size_t n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint::sqrt</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">boost::xint::to</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">xint::integer</a> to a built-in integer type. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">boost::xint::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">boost::xint::to_binary</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an integer, lowest byte first. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint::from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">boost::xint::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">boost::xint::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">boost::xint::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint::shift_right</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">boost::xint::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint::invmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">boost::xint::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint::operator+</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint::operator-</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f6171689ef68ff6672e43a1e24ea494">boost::xint::operator+</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac16aa971521ae015a62ec015f1fe56d0">boost::xint::operator-</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint::operator*</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint::operator/</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint::operator%</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint::operator&</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint::operator|</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">boost::xint::log2</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint::lcm</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
+</div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Declares the core integer type. </p>
+
+<p>Definition in file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/integer_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/integer_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,354 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: integer.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>integer.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_INTEGER_HPP</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_INTEGER_HPP</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="exceptions_8hpp.html" title="The exception namespace.">exceptions.hpp</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <boost/type_traits.hpp></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>boost {
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>xint {
+<a name="l00027"></a>00027
+<a name="l00039"></a><a class="code" href="classboost_1_1xint_1_1integer.html">00039</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>: <span class="keyword">public</span> detail::<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a> {
+<a name="l00040"></a>00040 <span class="keyword">public</span>:
+<a name="l00041"></a>00041
+<a name="l00044"></a>00044 <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>();
+<a name="l00045"></a>00045 <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00046"></a>00046 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b);
+<a name="l00047"></a>00047 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00048"></a>00048 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00049"></a>00049 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00050"></a>00050 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
+<a name="l00051"></a>00051 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00052"></a>00052 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00053"></a>00053 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+<a name="l00055"></a>00055
+<a name="l00064"></a>00064 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> &c);
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00067"></a>00067 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00068"></a>00068 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00069"></a>00069 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00070"></a>00070 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a>();
+<a name="l00073"></a>00073 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a>();
+<a name="l00074"></a>00074 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a>(<span class="keywordtype">int</span>);
+<a name="l00075"></a>00075 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a>(<span class="keywordtype">int</span>);
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00078"></a>00078 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00079"></a>00079 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00080"></a>00080 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) <span class="keyword">const</span>;
+<a name="l00081"></a>00081 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
+<a name="l00082"></a>00082 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00083"></a>00083 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00085"></a>00085
+<a name="l00093"></a>00093 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a>();
+<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>();
+<a name="l00096"></a>00096
+<a name="l00099"></a>00099 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1" title="Tests the lowest bit of *this to determine oddness.">odd</a>() <span class="keyword">const</span>;
+<a name="l00100"></a>00100 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb" title="Tests the lowest bit of *this to determine evenness.">even</a>() <span class="keyword">const</span>;
+<a name="l00101"></a>00101 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>(<span class="keywordtype">bool</span> signed_zero=<span class="keyword">false</span>) <span class="keyword">const</span>;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f" title="Tells you roughly how large an integer is.">hex_digits</a>() <span class="keyword">const</span>;
+<a name="l00105"></a>00105
+<a name="l00111"></a>00111 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
+<a name="l00113"></a>00113 };
+<a name="l00114"></a>00114
+<a name="l00117"></a>00117 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00118"></a>00118 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00119"></a>00119 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& addend);
+<a name="l00120"></a>00120 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& subtrahend);
+<a name="l00121"></a>00121 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& multiplicand);
+<a name="l00122"></a>00122 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& divisor);
+<a name="l00123"></a>00123 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>&
+<a name="l00124"></a>00124 divisor);
+<a name="l00126"></a>00126
+<a name="l00129"></a>00129 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00130"></a>00130 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& exponent);
+<a name="l00131"></a>00131 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> exponent);
+<a name="l00132"></a>00132 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n);
+<a name="l00133"></a>00133 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00135"></a>00135
+<a name="l00138"></a>00138 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00139"></a>00139 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
+<a name="l00140"></a>00140 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00141"></a>00141 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00142"></a>00142 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string& s);
+<a name="l00144"></a>00144
+<a name="l00147"></a>00147 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00148"></a>00148 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00149"></a>00149 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00150"></a>00150 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00151"></a>00151 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00152"></a>00152 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00153"></a>00153 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a> (<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00154"></a>00154 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00155"></a>00155 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits);
+<a name="l00156"></a>00156 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00157"></a>00157 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00159"></a>00159
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& modBy);
+<a name="l00167"></a>00167 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& by, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& modulus);
+<a name="l00168"></a>00168 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& modulus);
+<a name="l00169"></a>00169 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& exponent, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>&
+<a name="l00170"></a>00170 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
+<a name="l00171"></a>00171 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& modulus);
+<a name="l00173"></a>00173
+<a name="l00176"></a>00176 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
+<a name="l00177"></a>00177 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
+<a name="l00179"></a>00179
+<a name="l00182"></a>00182 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00183"></a>00183 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00185"></a>00185
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1);
+<a name="l00192"></a>00192 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00193"></a>00193 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00194"></a>00194 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00195"></a>00195 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00196"></a>00196 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00197"></a>00197 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& a);
+<a name="l00200"></a>00200 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& a);
+<a name="l00201"></a>00201 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00202"></a>00202 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00203"></a>00203 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">operator*</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00204"></a>00204 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">operator/</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00205"></a>00205 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">operator%</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00206"></a>00206 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">operator&</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00207"></a>00207 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">operator|</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00208"></a>00208 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">operator^</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00210"></a>00210
+<a name="l00213"></a>00213 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> &n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
+<a name="l00214"></a>00214 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00215"></a>00215 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& num2);
+<a name="l00216"></a>00216 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& num2);
+<a name="l00218"></a>00218
+<a name="l00220"></a>00220 <span class="comment">// Template function definitions</span>
+<a name="l00221"></a>00221
+<a name="l00234"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acf287891cafa7f5b20f5e56476fa1fc6">00234</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00235"></a>00235 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00236"></a>00236 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
+<a name="l00237"></a>00237 {
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (n >= 0) {
+<a name="l00239"></a>00239 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
+<a name="l00240"></a>00240 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
+<a name="l00241"></a>00241 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t(n));
+<a name="l00242"></a>00242 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n == (std::numeric_limits<T>::min)()) {
+<a name="l00243"></a>00243 <span class="comment">// Have to treat the minimum number carefully, because -n is not</span>
+<a name="l00244"></a>00244 <span class="comment">// what you'd think it is.</span>
+<a name="l00245"></a>00245 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t(-(n+1)));
+<a name="l00246"></a>00246 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(<span class="keyword">true</span>);
+<a name="l00247"></a>00247 --(*this);
+<a name="l00248"></a>00248 } <span class="keywordflow">else</span> {
+<a name="l00249"></a>00249 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t(-n));
+<a name="l00250"></a>00250 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(<span class="keyword">true</span>);
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 }
+<a name="l00253"></a>00253
+<a name="l00266"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">00266</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00267"></a>00267 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00268"></a>00268 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
+<a name="l00271"></a>00271 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
+<a name="l00272"></a>00272 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t(n));
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274
+<a name="l00285"></a>00285 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00286"></a><a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">00286</a> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n) {
+<a name="l00287"></a>00287 <span class="keywordflow">if</span> (n < (std::numeric_limits<T>::min)()
+<a name="l00288"></a>00288 || n > (std::numeric_limits<T>::max)())
+<a name="l00289"></a>00289 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">exceptions::too_big</a>(<span class="stringliteral">"value out of range for requested "</span>
+<a name="l00290"></a>00290 <span class="stringliteral">"conversion"</span>);
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 T rval=0;
+<a name="l00293"></a>00293 <span class="keywordtype">size_t</span> len=n.<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>();
+<a name="l00294"></a>00294 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<len; ++x)
+<a name="l00295"></a>00295 rval=static_cast<T>((rval * <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">detail::digit_overflowbit</a>)
+<a name="l00296"></a>00296 + n.<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(len-x-1));
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>() < 0) rval *= -1;
+<a name="l00298"></a>00298 <span class="keywordflow">return</span> rval;
+<a name="l00299"></a>00299 }
+<a name="l00300"></a>00300
+<a name="l00303"></a>00303 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00304"></a><a class="code" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">00304</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">operator<<</a>(std::basic_ostream<charT,
+<a name="l00305"></a>00305 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n)
+<a name="l00306"></a>00306 {
+<a name="l00307"></a>00307 <span class="keywordtype">int</span> base=((out.flags() & std::ios::hex) ? 16
+<a name="l00308"></a>00308 : (out.flags() & std::ios::oct) ? 8
+<a name="l00309"></a>00309 : 10);
+<a name="l00310"></a>00310 <span class="keywordtype">bool</span> upperCase=(out.flags() & std::ios::uppercase ? <span class="keyword">true</span> : <span class="keyword">false</span>);
+<a name="l00311"></a>00311
+<a name="l00312"></a>00312 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae" title="Tests the sign of *this.">sign</a>();
+<a name="l00313"></a>00313 <span class="keywordflow">if</span> ((out.flags() & std::ios::showpos) && nsign >= 0) out << <span class="stringliteral">"+"</span>;
+<a name="l00314"></a>00314
+<a name="l00315"></a>00315 <span class="keywordflow">if</span> (out.flags() & std::ios::showbase) {
+<a name="l00316"></a>00316 <span class="keywordflow">if</span> (nsign < 0) out << <span class="stringliteral">"-"</span>;
+<a name="l00317"></a>00317
+<a name="l00318"></a>00318 <span class="keywordflow">if</span> (base==16 && upperCase) out << <span class="stringliteral">"0X"</span>;
+<a name="l00319"></a>00319 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==16) out << <span class="stringliteral">"0x"</span>;
+<a name="l00320"></a>00320 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==8) out << <span class="stringliteral">"0"</span>;
+<a name="l00321"></a>00321
+<a name="l00322"></a>00322 out << <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(n), base, upperCase);
+<a name="l00323"></a>00323 } <span class="keywordflow">else</span> {
+<a name="l00324"></a>00324 out << <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(n, base, upperCase);
+<a name="l00325"></a>00325 }
+<a name="l00326"></a>00326 <span class="keywordflow">return</span> out;
+<a name="l00327"></a>00327 }
+<a name="l00328"></a>00328
+<a name="l00329"></a>00329 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00330"></a><a class="code" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">00330</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">operator>></a>(std::basic_istream<charT,
+<a name="l00331"></a>00331 traits>& in, <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& n)
+<a name="l00332"></a>00332 {
+<a name="l00333"></a>00333 <span class="keywordtype">int</span> hex=(in.flags() & std::ios::hex) ? 1 : 0;
+<a name="l00334"></a>00334 <span class="keywordtype">int</span> dec=(in.flags() & std::ios::dec) ? 1 : 0;
+<a name="l00335"></a>00335 <span class="keywordtype">int</span> oct=(in.flags() & std::ios::oct) ? 1 : 0;
+<a name="l00336"></a>00336 <span class="keywordtype">int</span> count=hex+dec+oct;
+<a name="l00337"></a>00337
+<a name="l00338"></a>00338 <span class="keywordtype">size_t</span> base=<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>;
+<a name="l00339"></a>00339 <span class="keywordflow">if</span> (count==1) {
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (hex) base=16;
+<a name="l00341"></a>00341 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (oct) base=8;
+<a name="l00342"></a>00342 <span class="keywordflow">else</span> base=10;
+<a name="l00343"></a>00343 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count>1) base=10;
+<a name="l00344"></a>00344 <span class="comment">// else auto-base</span>
+<a name="l00345"></a>00345
+<a name="l00346"></a>00346 std::string s;
+<a name="l00347"></a>00347 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'+'</span>) {
+<a name="l00348"></a>00348 in.ignore();
+<a name="l00349"></a>00349 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'-'</span>) {
+<a name="l00350"></a>00350 in.ignore();
+<a name="l00351"></a>00351 s.push_back(<span class="charliteral">'-'</span>);
+<a name="l00352"></a>00352 }
+<a name="l00353"></a>00353
+<a name="l00354"></a>00354 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
+<a name="l00355"></a>00355 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'0'</span>) {
+<a name="l00356"></a>00356 in.ignore();
+<a name="l00357"></a>00357 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00358"></a>00358 <span class="keywordflow">if</span> (c==<span class="charliteral">'x'</span> || c==<span class="charliteral">'X'</span>) {
+<a name="l00359"></a>00359 in.ignore();
+<a name="l00360"></a>00360 base=16;
+<a name="l00361"></a>00361 } <span class="keywordflow">else</span> base=8;
+<a name="l00362"></a>00362 } <span class="keywordflow">else</span> base=10;
+<a name="l00363"></a>00363 }
+<a name="l00364"></a>00364
+<a name="l00365"></a>00365 <span class="keywordflow">while</span> (in) {
+<a name="l00366"></a>00366 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00367"></a>00367 <span class="keywordflow">if</span> ((base==8 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'7'</span>)) ||
+<a name="l00368"></a>00368 (base==10 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>)) ||
+<a name="l00369"></a>00369 (base==16 && ((c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>) || (c>=<span class="charliteral">'a'</span> && c<=<span class="charliteral">'f'</span>) ||
+<a name="l00370"></a>00370 (c>=<span class="charliteral">'A'</span> && c<=<span class="charliteral">'F'</span>))))
+<a name="l00371"></a>00371 {
+<a name="l00372"></a>00372 in.ignore();
+<a name="l00373"></a>00373 s.push_back(<span class="keywordtype">char</span>(c));
+<a name="l00374"></a>00374 } <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
+<a name="l00375"></a>00375 }
+<a name="l00376"></a>00376
+<a name="l00377"></a>00377 <span class="keywordflow">try</span> {
+<a name="l00378"></a>00378 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a> testValue=<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(s, base);
+<a name="l00379"></a>00379 n=testValue;
+<a name="l00380"></a>00380 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00381"></a>00381 <span class="comment">// Catch invalid strings</span>
+<a name="l00382"></a>00382 in.setstate(std::ios::failbit);
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="keywordflow">return</span> in;
+<a name="l00386"></a>00386 }
+<a name="l00388"></a>00388
+<a name="l00389"></a>00389 } <span class="comment">// namespace xint</span>
+<a name="l00390"></a>00390 } <span class="comment">// namespace boost</span>
+<a name="l00391"></a>00391
+<a name="l00392"></a><a class="code" href="namespacestd.html">00392</a> <span class="keyword">namespace </span>std {
+<a name="l00393"></a>00393 <span class="keyword">template</span><>
+<a name="l00394"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">00394</a> <span class="keyword">class </span>numeric_limits<boost::xint::integer> {
+<a name="l00395"></a>00395 <span class="keyword">public</span>:
+<a name="l00396"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">00396</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_specialized = <span class="keyword">true</span>;
+<a name="l00397"></a>00397
+<a name="l00398"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">00398</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">min</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00399"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">00399</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">max</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00400"></a>00400
+<a name="l00401"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">00401</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits = 0; <span class="comment">// Not applicable</span>
+<a name="l00402"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">00402</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits10 = 0; <span class="comment">// Not applicable</span>
+<a name="l00403"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">00403</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_signed = <span class="keyword">true</span>;
+<a name="l00404"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">00404</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_integer = <span class="keyword">true</span>;
+<a name="l00405"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">00405</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_exact = <span class="keyword">true</span>;
+<a name="l00406"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">00406</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> radix = 2;
+<a name="l00407"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">00407</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">epsilon</a>() throw() { <span class="keywordflow">return</span> 0; }
+<a name="l00408"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">00408</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">round_error</a>() throw() { <span class="keywordflow">return</span> 0; }
+<a name="l00409"></a>00409
+<a name="l00410"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">00410</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent = 0; <span class="comment">// Not applicable</span>
+<a name="l00411"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">00411</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent10 = 0; <span class="comment">// Not applicable</span>
+<a name="l00412"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">00412</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent = 0; <span class="comment">// Not applicable</span>
+<a name="l00413"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">00413</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent10 = 0; <span class="comment">// Not applicable</span>
+<a name="l00414"></a>00414
+<a name="l00415"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#afc2b5e56fb2057c2459180219491d930">00415</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_infinity = <span class="keyword">false</span>;
+<a name="l00416"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">00416</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_quiet_NaN = <span class="keyword">false</span>;
+<a name="l00417"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">00417</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_signaling_NaN = <span class="keyword">false</span>;
+<a name="l00418"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">00418</a> <span class="keyword">static</span> <span class="keyword">const</span> float_denorm_style has_denorm = denorm_absent; <span class="comment">// Not applicable</span>
+<a name="l00419"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">00419</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_denorm_loss = <span class="keyword">false</span>; <span class="comment">// Not applicable</span>
+<a name="l00420"></a>00420
+<a name="l00421"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">00421</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">infinity</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00422"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">00422</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">quiet_NaN</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00423"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">00423</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">signaling_NaN</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00424"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">00424</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">boost::xint::integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">denorm_min</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00425"></a>00425
+<a name="l00426"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa29c196c9fdae93c3c7ebc2bdcde118e">00426</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_iec559 = <span class="keyword">false</span>;
+<a name="l00427"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">00427</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_bounded = <span class="keyword">false</span>;
+<a name="l00428"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">00428</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_modulo = <span class="keyword">false</span>;
+<a name="l00429"></a>00429
+<a name="l00430"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">00430</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> traps = <span class="keyword">true</span>; <span class="comment">// I assume this means exceptions?</span>
+<a name="l00431"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">00431</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> tinyness_before = <span class="keyword">false</span>; <span class="comment">// Not applicable</span>
+<a name="l00432"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">00432</a> <span class="keyword">static</span> <span class="keyword">const</span> float_round_style round_style = round_indeterminate; <span class="comment">// Not applicable</span>
+<a name="l00433"></a>00433 };
+<a name="l00434"></a>00434 } <span class="comment">// namespace std</span>
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_INTEGER_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/internals_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/internals_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: internals.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>internals.hpp File Reference</h1>
+<p>Contains the internal definitions required for all XInt types.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the magnitude digits of an integer. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">boost::xint::detail::base_integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for the integer classes. More...<br/></td></tr>
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uintmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">boost::xint::detail::doubledigit_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uint_t<br class="typebreak"/>
+< std::numeric_limits<br class="typebreak"/>
+< doubledigit_t >::digits/2 ><br class="typebreak"/>
+::fast </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">boost::xint::detail::digit_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef boost::function< bool()> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint::callback_t</a></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">The variable-length data_t functions.</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp80e5972139cba853c07c583d1d68268c"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">boost::xint::detail::allocate</a> (size_t max_digits, size_t initial_length)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">boost::xint::detail::reallocate</a> (data_t<> *olddata, size_t newsize)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">boost::xint::detail::duplicate</a> (data_t<> *olddata, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a5e040a2d24aaf0c1d4b85fdd0721ee8e">boost::xint::detail::duplicate</a> (data_t<> *olddata, data_t<> *data_to_copy, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">boost::xint::detail::deallocate</a> (data_t<> *data)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint::opt_secure_mode</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379">boost::xint::opt_thread_safe</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. <br/></td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">boost::xint::detail::nan_text</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the text representation of the Not-a-Number value. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const callback_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">boost::xint::no_callback</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint::autobase</a> = (std::numeric_limits<size_t>::max)()</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Some constants used by the library.</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpe1f42a3ea000e0468230fb7abe73e7b1"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">boost::xint::detail::bits_per_digit</a> = std::numeric_limits<digit_t>::digits</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">boost::xint::detail::digit_hibit</a> = (digit_t(1) << (bits_per_digit-1))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const doubledigit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">boost::xint::detail::doubledigit_hibit</a> = (doubledigit_t(1) << (bits_per_digit*2-1))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const doubledigit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">boost::xint::detail::digit_overflowbit</a> = (doubledigit_t(1) << bits_per_digit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">boost::xint::detail::digit_mask</a> = digit_t(digit_overflowbit-1)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the internal definitions required for all XInt types. </p>
+<p>This file will be included by the library itself when needed. </p>
+
+<p>Definition in file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/internals_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/internals_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: internals.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>internals.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00020"></a>00020 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_INTERNALS_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_INTERNALS_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <string></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <limits></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <cstddef></span> <span class="comment">// for size_t</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <iostream></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <stdexcept></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <boost/integer.hpp></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <boost/cstdint.hpp></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <boost/function.hpp></span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="keyword">namespace </span>boost {
+<a name="l00033"></a>00033
+<a name="l00035"></a>00035 <span class="keyword">namespace </span>xint {
+<a name="l00036"></a>00036
+<a name="l00038"></a>00038 <span class="keyword">namespace </span>detail {
+<a name="l00039"></a>00039
+<a name="l00045"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">00045</a> <span class="keyword">typedef</span> boost::uintmax_t <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>;
+<a name="l00046"></a>00046
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> boost::uint_t<std::numeric_limits<doubledigit_t>::digits / 2>::fast
+<a name="l00053"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">00053</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>;
+<a name="l00054"></a>00054
+<a name="l00057"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">00057</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> = std::numeric_limits<digit_t>::digits;
+<a name="l00058"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">00058</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">digit_hibit</a> = (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>-1));
+<a name="l00059"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">00059</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a> = (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>*2-1));
+<a name="l00060"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">00060</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> = (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00061"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">00061</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a> = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>-1);
+<a name="l00063"></a>00063
+<a name="l00065"></a>00065 <span class="keyword">const</span> <span class="keyword">extern</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">nan_text</a>;
+<a name="l00066"></a>00066
+<a name="l00068"></a>00068 <span class="keyword">template</span> <<span class="keywordtype">int</span> digit_count=1>
+<a name="l00069"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html">00069</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> {
+<a name="l00070"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">00070</a> <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a>;
+<a name="l00071"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">00071</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[digit_count];
+<a name="l00072"></a>00072 };
+<a name="l00073"></a>00073
+<a name="l00076"></a>00076 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(<span class="keywordtype">size_t</span> max_digits, <span class="keywordtype">size_t</span> initial_length=
+<a name="l00077"></a>00077 (std::numeric_limits<size_t>::max)());
+<a name="l00078"></a>00078 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">reallocate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *olddata, <span class="keywordtype">size_t</span> newsize);
+<a name="l00079"></a>00079 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *olddata, <span class="keywordtype">size_t</span> extra=0);
+<a name="l00080"></a>00080 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *olddata, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *data_to_copy, <span class="keywordtype">size_t</span> extra=0);
+<a name="l00081"></a>00081 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *data);
+<a name="l00083"></a>00083
+<a name="l00085"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html">00085</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a> {
+<a name="l00086"></a>00086 <span class="keyword">public</span>:
+<a name="l00087"></a>00087 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a33dd417aa6d0a7892efe3d497b8f3f80">~base_integer</a>();
+<a name="l00088"></a>00088
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span>;
+<a name="l00092"></a>00092 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>) <span class="keyword">const</span>;
+<a name="l00093"></a>00093 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>* <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">_get_digits</a>();
+<a name="l00094"></a>00094 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>* <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a9ee8727d51762352bba8ea8e3b8489f2">_get_digits</a>() <span class="keyword">const</span>;
+<a name="l00095"></a>00095 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>() <span class="keyword">const</span>;
+<a name="l00096"></a>00096 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aee70939aaa336233f62341cf7d595010">_is_unique</a>() <span class="keyword">const</span>;
+<a name="l00097"></a>00097 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>() <span class="keyword">const</span>;
+<a name="l00098"></a>00098 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() <span class="keyword">const</span>;
+<a name="l00099"></a>00099 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a91cb2f84f30425e9158c2ac9bfcd9cb6">_set_negative</a>(<span class="keywordtype">bool</span> neg);
+<a name="l00100"></a>00100 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab74b3c73fe6560f1f760b1a94612b189">_cleanup</a>();
+<a name="l00101"></a>00101 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a36175e45a3f8660f59a9de593328fefd">_realloc</a>(<span class="keywordtype">size_t</span> new_digit_count);
+<a name="l00102"></a>00102 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ad75a8d9bef5eb2d57cbac37cafd925eb">_duplicate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& copy, <span class="keywordtype">size_t</span> extra);
+<a name="l00103"></a>00103 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aea0cff03f7886f2c44747538e27ad7f1">_shift_left</a>(<span class="keywordtype">size_t</span> byBits);
+<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a8236c349f72d154823d592123d94f218">_shift_right</a>(<span class="keywordtype">size_t</span> byBits);
+<a name="l00105"></a>00105 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a3e0e821a38c37d4b94b61a62a9448b42">_add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& n);
+<a name="l00106"></a>00106 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f7e982aa22a1910dd5daf0e260c43c5">_subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& n);
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <span class="keyword">protected</span>:
+<a name="l00110"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">00110</a> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a>(): fixed_mask(0), negative(false), data(0) { }
+<a name="l00111"></a>00111 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0e91eb0fd9e83d3cfc284d5b7e20207e">base_integer</a>(<span class="keywordtype">size_t</span> count, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask, <span class="keywordtype">void</span> *d);
+<a name="l00112"></a>00112
+<a name="l00113"></a><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">00113</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data==0); };
+<a name="l00114"></a>00114 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>();
+<a name="l00115"></a>00115 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *new_data, <span class="keywordtype">bool</span> neg=<span class="keyword">false</span>);
+<a name="l00116"></a>00116 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& copy);
+<a name="l00117"></a>00117 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>();
+<a name="l00118"></a>00118 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#ab94f96758a658c1523291c6d10ca7dc0">_attach_1</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n);
+<a name="l00119"></a>00119 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a00be0a0a2d19316259c54a8ced4e8451">_attach_n</a>(boost::uintmax_t n);
+<a name="l00120"></a>00120 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0980c3f09050640e8f33a9f10bcd2c38">_set_n</a>(boost::uintmax_t n);
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="keyword">private</span>:
+<a name="l00123"></a>00123 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> fixed_mask;
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="keywordtype">bool</span> negative;
+<a name="l00126"></a>00126 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t<></a> *data;
+<a name="l00127"></a>00127 };
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 } <span class="comment">// namespace detail</span>
+<a name="l00130"></a>00130
+<a name="l00134"></a><a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">00134</a> <span class="keyword">typedef</span> boost::function<bool ()> <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>;
+<a name="l00135"></a>00135
+<a name="l00139"></a><a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">00139</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>;
+<a name="l00140"></a>00140
+<a name="l00144"></a><a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">00144</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>=(std::numeric_limits<size_t>::max)();
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>;
+<a name="l00147"></a>00147 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>;
+<a name="l00148"></a>00148 <span class="keyword">template</span> <<span class="keywordtype">size_t</span> bits> <span class="keyword">class </span>fixed_integer;
+<a name="l00149"></a>00149
+<a name="l00152"></a>00152 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd" title="Tells whether the library was compiled with Secure Mode enabled.">opt_secure_mode</a>();
+<a name="l00153"></a>00153 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379" title="Tells whether the library was compiled with the Thread Safe Operation option enabled...">opt_thread_safe</a>();
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 } <span class="comment">// namespace xint</span>
+<a name="l00157"></a>00157 } <span class="comment">// namespace boost</span>
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_INTERNALS_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Modified: sandbox/xint/doc/misc_8cpp.html
==============================================================================
--- sandbox/xint/doc/misc_8cpp.html (original)
+++ sandbox/xint/doc/misc_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,12 +36,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
@@ -52,18 +47,15 @@
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379">boost::xint::opt_thread_safe</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core::log2</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">boost::xint::log2</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Functions that don't fall into any other category. </p>
<p>Definition in file <a class="el" href="misc_8cpp_source.html">misc.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/misc_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/misc_8cpp_source.html (original)
+++ sandbox/xint/doc/misc_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -58,22 +58,21 @@
<a name="l00047"></a>00047 <span class="preprocessor"> #endif</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>}
<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">namespace </span>core {
-<a name="l00064"></a>00064 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00065"></a>00065 <span class="keywordtype">size_t</span> r=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a> * n._get_length();
-<a name="l00066"></a>00066 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">detail::digit_hibit</a>, d=n._get_digit(n._get_length()-1);
-<a name="l00067"></a>00067 <span class="keywordflow">while</span> (mask!=0) {
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> ((mask & d)!=0) <span class="keywordflow">break</span>;
-<a name="l00069"></a>00069 mask>>=1;
-<a name="l00070"></a>00070 --r;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> r;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 } <span class="comment">// namespace core</span>
-<a name="l00075"></a>00075 } <span class="comment">// namespace xint</span>
-<a name="l00076"></a>00076 } <span class="comment">// namespace boost</span>
+<a name="l00063"></a>00063 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00064"></a>00064 <span class="keywordtype">size_t</span> r=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a> * n._get_length();
+<a name="l00065"></a>00065 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">detail::digit_hibit</a>, d=n._get_digit(n._get_length()-1);
+<a name="l00066"></a>00066 <span class="keywordflow">while</span> (mask!=0) {
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((mask & d)!=0) <span class="keywordflow">break</span>;
+<a name="l00068"></a>00068 mask>>=1;
+<a name="l00069"></a>00069 --r;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 <span class="keywordflow">return</span> r;
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 } <span class="comment">// namespace xint</span>
+<a name="l00075"></a>00075 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/modular_8cpp.html
==============================================================================
--- sandbox/xint/doc/modular_8cpp.html (original)
+++ sandbox/xint/doc/modular_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,26 +36,21 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core::mod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core::sqrmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">boost::xint::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for the basic modular math functions. </p>
@@ -63,7 +58,7 @@
<p>Definition in file <a class="el" href="modular_8cpp_source.html">modular.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/modular_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/modular_8cpp_source.html (original)
+++ sandbox/xint/doc/modular_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,69 +38,67 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00021"></a>00021 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "../boost/xint/xint_monty.hpp"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "../boost/xint/monty.hpp"</span>
<a name="l00023"></a>00023
<a name="l00024"></a>00024 <span class="keyword">namespace </span>boost {
<a name="l00025"></a>00025 <span class="keyword">namespace </span>xint {
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>core {
-<a name="l00027"></a>00027
-<a name="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00036"></a>00036 integer r=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(n, m).second;
-<a name="l00037"></a>00037 <span class="keywordflow">if</span> (r.sign() < 0) r+=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(m);
-<a name="l00038"></a>00038 <span class="keywordflow">return</span> r;
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040
-<a name="l00053"></a>00053 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& m) {
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(n * by, m);
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00069"></a>00069 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(n), m);
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00094"></a>00094 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m, <span class="keywordtype">bool</span>
-<a name="l00095"></a>00095 noMontgomery)
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (m < <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">throw</span> invalid_modulus();
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 integer answer(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="comment">// Montgomery's method is often noticeably faster, but only works if the</span>
-<a name="l00105"></a>00105 <span class="comment">// m is odd.</span>
-<a name="l00106"></a>00106 <span class="keywordflow">if</span> (m.odd() && !noMontgomery) {
-<a name="l00107"></a>00107 answer=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n) % m, <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(e), m);
-<a name="l00108"></a>00108 } <span class="keywordflow">else</span> {
-<a name="l00109"></a>00109 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n));
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keywordtype">size_t</span> length=e._get_length(), lastBitCount=0;
-<a name="l00112"></a>00112 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(length-1));
-<a name="l00113"></a>00113 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
-<a name="l00116"></a>00116 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(eIndex));
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount :
-<a name="l00119"></a>00119 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>));
-<a name="l00120"></a>00120 <span class="keywordflow">while</span> (bitCount-- > 0) {
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (ee & 0x01) answer=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a" title="Get the modular product of two integers.">mulmod</a>(answer, p, m);
-<a name="l00122"></a>00122 p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(p, m);
-<a name="l00123"></a>00123 ee >>= 1;
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 answer._set_negative(neg);
-<a name="l00129"></a>00129 <span class="keywordflow">return</span> answer;
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 } <span class="comment">// namespace core</span>
-<a name="l00133"></a>00133 } <span class="comment">// namespace xint</span>
-<a name="l00134"></a>00134 } <span class="comment">// namespace boost</span>
+<a name="l00026"></a>00026
+<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00035"></a>00035 integer r=<a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(n, m).second;
+<a name="l00036"></a>00036 <span class="keywordflow">if</span> (r.sign() < 0) r+=<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(m);
+<a name="l00037"></a>00037 <span class="keywordflow">return</span> r;
+<a name="l00038"></a>00038 }
+<a name="l00039"></a>00039
+<a name="l00052"></a>00052 integer <a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& m) {
+<a name="l00053"></a>00053 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(n * by, m);
+<a name="l00054"></a>00054 }
+<a name="l00055"></a>00055
+<a name="l00068"></a>00068 integer <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(n), m);
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071
+<a name="l00093"></a>00093 integer <a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m, <span class="keywordtype">bool</span>
+<a name="l00094"></a>00094 noMontgomery)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (m < <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()) <span class="keywordflow">throw</span> exceptions::invalid_modulus();
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>();
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 integer answer(<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>());
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="comment">// Montgomery's method is often noticeably faster, but only works if the</span>
+<a name="l00104"></a>00104 <span class="comment">// m is odd.</span>
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> (m.odd() && !noMontgomery) {
+<a name="l00106"></a>00106 answer=<a class="code" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(n) % m, <a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(e), m);
+<a name="l00107"></a>00107 } <span class="keywordflow">else</span> {
+<a name="l00108"></a>00108 integer p(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(n));
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="keywordtype">size_t</span> length=e._get_length(), lastBitCount=0;
+<a name="l00111"></a>00111 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(length-1));
+<a name="l00112"></a>00112 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
+<a name="l00115"></a>00115 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(eIndex));
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount :
+<a name="l00118"></a>00118 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>));
+<a name="l00119"></a>00119 <span class="keywordflow">while</span> (bitCount-- > 0) {
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (ee & 0x01) answer=<a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(answer, p, m);
+<a name="l00121"></a>00121 p=<a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(p, m);
+<a name="l00122"></a>00122 ee >>= 1;
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 answer._set_negative(neg);
+<a name="l00128"></a>00128 <span class="keywordflow">return</span> answer;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 } <span class="comment">// namespace xint</span>
+<a name="l00132"></a>00132 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/monty_8cpp.html
==============================================================================
--- sandbox/xint/doc/monty_8cpp.html (original)
+++ sandbox/xint/doc/monty_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,12 +36,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
@@ -50,18 +45,18 @@
<tr><td colspan="2"><div class="groupHeader">Montgomery Reduction functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpef45384829a28a8031424a8c453ceaa0"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core::inverse0</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core::montgomeryR</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint::inverse0</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint::montgomeryR</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Internally used functions. </p>
@@ -85,7 +80,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00127">127</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
+<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00125">125</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
</div>
</div>
@@ -101,12 +96,12 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00164">164</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
+<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00162">162</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/monty_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/monty_8cpp_source.html (original)
+++ sandbox/xint/doc/monty_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,259 +38,256 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00021"></a>00021 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00023"></a>00023
-<a name="l00024"></a>00024 <span class="preprocessor">#include <boost/scoped_array.hpp></span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="preprocessor">#include <vector></span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>boost {
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>xint {
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>core {
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include <boost/scoped_array.hpp></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include <vector></span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>boost {
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>xint {
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="keyword">using namespace </span>detail;
<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">using namespace </span>detail;
-<a name="l00033"></a>00033
-<a name="l00035"></a>00035 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00036"></a>00036 <span class="comment">// Using the Dussé and Kalisk simplification</span>
-<a name="l00037"></a>00037 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> x = 2, y = 1;
-<a name="l00038"></a>00038 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n0 = n._get_digit(0);
-<a name="l00039"></a>00039 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 2; i <= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>; ++i, x <<= 1)
-<a name="l00040"></a>00040 <span class="keywordflow">if</span> (x < ((n0 * y) & ((x << 1) - 1)))
-<a name="l00041"></a>00041 y += x;
-<a name="l00042"></a>00042 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(x - y);
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00048"></a>00048 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * n._get_data()->mLength);
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00053"></a>00053 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> (n * <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(m) % m);
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00059"></a>00059 integer inv=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(m), m);
-<a name="l00060"></a>00060 <span class="keywordflow">return</span> (n * inv % m);
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="comment">//integer montgomeryReduction(const integer& m, const integer& mPrime, const</span>
-<a name="l00064"></a>00064 <span class="comment">// integer& T)</span>
-<a name="l00065"></a>00065 <span class="comment">//{</span>
-<a name="l00066"></a>00066 <span class="comment">// // Unstated parameter b is digit_overflowbit, a power of 2</span>
-<a name="l00067"></a>00067 <span class="comment">// // Unstated parameter n is m.data->mLength</span>
-<a name="l00068"></a>00068 <span class="comment">// // Unstated parameter R is b^n</span>
-<a name="l00069"></a>00069 <span class="comment">// // gcd(m, b)==1, or in other words, m must be an odd number</span>
-<a name="l00070"></a>00070 <span class="comment">// // m'=-m^(-1) mod b (precalculated)</span>
-<a name="l00071"></a>00071 <span class="comment">// // T is any arbitrary number greater than zero and <= m*R</span>
-<a name="l00072"></a>00072 <span class="comment">//</span>
-<a name="l00073"></a>00073 <span class="comment">// int n=m._get_data()->mLength;</span>
-<a name="l00074"></a>00074 <span class="comment">// doubledigit_t mprime = mPrime._get_data()->digits[0];</span>
-<a name="l00075"></a>00075 <span class="comment">//</span>
-<a name="l00076"></a>00076 <span class="comment">// integer A(T);</span>
-<a name="l00077"></a>00077 <span class="comment">// for (int i=0; i < n; ++i) {</span>
-<a name="l00078"></a>00078 <span class="comment">// integer ui((A._get_data()->digits[i] * mprime) & digit_mask);</span>
-<a name="l00079"></a>00079 <span class="comment">// ui <<= (bits_per_digit * i); // Fast-multiply by b^i</span>
-<a name="l00080"></a>00080 <span class="comment">// A+=(ui*m);</span>
-<a name="l00081"></a>00081 <span class="comment">// }</span>
-<a name="l00082"></a>00082 <span class="comment">// A >>= (bits_per_digit * n); // Fast-divide by b^n</span>
-<a name="l00083"></a>00083 <span class="comment">// if (A >= m) A -= m;</span>
-<a name="l00084"></a>00084 <span class="comment">// return A;</span>
-<a name="l00085"></a>00085 <span class="comment">//}</span>
-<a name="l00086"></a>00086
-<a name="l00090"></a>00090 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer& b, <span class="keyword">const</span> integer&
-<a name="l00091"></a>00091 n, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="comment">// Using the Dussé and Kalisk simplification</span>
-<a name="l00094"></a>00094 <span class="comment">// Unstated parameter B is a power of two representing the number of values</span>
-<a name="l00095"></a>00095 <span class="comment">// that a single digit can hold, i.e. digit_overflowbit</span>
-<a name="l00096"></a>00096 <span class="comment">// Unstated parameter L is the number of digits in the modulus, i.e.</span>
-<a name="l00097"></a>00097 <span class="comment">// n._get_length()</span>
-<a name="l00098"></a>00098 <span class="comment">// Unstated parameter r is B^L</span>
-<a name="l00099"></a>00099 <span class="comment">// nPrime0 is nPrime mod B, or digit zero of nPrime</span>
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="keyword">const</span> integer B(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>);
-<a name="l00102"></a>00102 <span class="keyword">const</span> <span class="keywordtype">size_t</span> L(n._get_length()), L1(L-1);
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 integer t=a*b;
-<a name="l00105"></a>00105 <span class="keywordtype">size_t</span> i=0;
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordflow">do</span> {
-<a name="l00108"></a>00108 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mi=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(t._get_digit(i))*nPrime0);
-<a name="l00109"></a>00109 t += (n * mi) << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * i);
-<a name="l00110"></a>00110 } <span class="keywordflow">while</span> (++i <= L1);
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 t >>= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * L); <span class="comment">// Fast divide by r</span>
-<a name="l00113"></a>00113 <span class="keywordflow">return</span> (t >= n ? t - n : t);
-<a name="l00114"></a>00114 }
+<a name="l00033"></a>00033 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00034"></a>00034 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00035"></a>00035 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> x = 2, y = 1;
+<a name="l00036"></a>00036 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n0 = n._get_digit(0);
+<a name="l00037"></a>00037 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 2; i <= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>; ++i, x <<= 1)
+<a name="l00038"></a>00038 <span class="keywordflow">if</span> (x < ((n0 * y) & ((x << 1) - 1)))
+<a name="l00039"></a>00039 y += x;
+<a name="l00040"></a>00040 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(x - y);
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042
+<a name="l00046"></a>00046 integer <a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00047"></a>00047 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * n._get_length());
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049
+<a name="l00051"></a>00051 integer <a class="code" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> (n * <a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(m) % m);
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054
+<a name="l00056"></a>00056 integer <a class="code" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00057"></a>00057 integer inv=<a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(m), m);
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> (n * inv % m);
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="comment">//integer montgomeryReduction(const integer& m, const integer& mPrime, const</span>
+<a name="l00062"></a>00062 <span class="comment">// integer& T)</span>
+<a name="l00063"></a>00063 <span class="comment">//{</span>
+<a name="l00064"></a>00064 <span class="comment">// // Unstated parameter b is digit_overflowbit, a power of 2</span>
+<a name="l00065"></a>00065 <span class="comment">// // Unstated parameter n is m.data->mLength</span>
+<a name="l00066"></a>00066 <span class="comment">// // Unstated parameter R is b^n</span>
+<a name="l00067"></a>00067 <span class="comment">// // gcd(m, b)==1, or in other words, m must be an odd number</span>
+<a name="l00068"></a>00068 <span class="comment">// // m'=-m^(-1) mod b (precalculated)</span>
+<a name="l00069"></a>00069 <span class="comment">// // T is any arbitrary number greater than zero and <= m*R</span>
+<a name="l00070"></a>00070 <span class="comment">//</span>
+<a name="l00071"></a>00071 <span class="comment">// int n=m._get_data()->mLength;</span>
+<a name="l00072"></a>00072 <span class="comment">// doubledigit_t mprime = mPrime._get_data()->digits[0];</span>
+<a name="l00073"></a>00073 <span class="comment">//</span>
+<a name="l00074"></a>00074 <span class="comment">// integer A(T);</span>
+<a name="l00075"></a>00075 <span class="comment">// for (int i=0; i < n; ++i) {</span>
+<a name="l00076"></a>00076 <span class="comment">// integer ui((A._get_data()->digits[i] * mprime) & digit_mask);</span>
+<a name="l00077"></a>00077 <span class="comment">// ui <<= (bits_per_digit * i); // Fast-multiply by b^i</span>
+<a name="l00078"></a>00078 <span class="comment">// A+=(ui*m);</span>
+<a name="l00079"></a>00079 <span class="comment">// }</span>
+<a name="l00080"></a>00080 <span class="comment">// A >>= (bits_per_digit * n); // Fast-divide by b^n</span>
+<a name="l00081"></a>00081 <span class="comment">// if (A >= m) A -= m;</span>
+<a name="l00082"></a>00082 <span class="comment">// return A;</span>
+<a name="l00083"></a>00083 <span class="comment">//}</span>
+<a name="l00084"></a>00084
+<a name="l00088"></a>00088 integer <a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer& b, <span class="keyword">const</span> integer&
+<a name="l00089"></a>00089 n, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00092"></a>00092 <span class="comment">// Unstated parameter B is a power of two representing the number of values</span>
+<a name="l00093"></a>00093 <span class="comment">// that a single digit can hold, i.e. digit_overflowbit</span>
+<a name="l00094"></a>00094 <span class="comment">// Unstated parameter L is the number of digits in the modulus, i.e.</span>
+<a name="l00095"></a>00095 <span class="comment">// n._get_length()</span>
+<a name="l00096"></a>00096 <span class="comment">// Unstated parameter r is B^L</span>
+<a name="l00097"></a>00097 <span class="comment">// nPrime0 is nPrime mod B, or digit zero of nPrime</span>
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="keyword">const</span> integer B(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>);
+<a name="l00100"></a>00100 <span class="keyword">const</span> <span class="keywordtype">size_t</span> L(n._get_length()), L1(L-1);
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 integer t=a*b;
+<a name="l00103"></a>00103 <span class="keywordtype">size_t</span> i=0;
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keywordflow">do</span> {
+<a name="l00106"></a>00106 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mi=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(t._get_digit(i))*nPrime0);
+<a name="l00107"></a>00107 t += (n * mi) << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * i);
+<a name="l00108"></a>00108 } <span class="keywordflow">while</span> (++i <= L1);
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 t >>= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * L); <span class="comment">// Fast divide by r</span>
+<a name="l00111"></a>00111 <span class="keywordflow">return</span> (t >= n ? t - n : t);
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">namespace </span>{
<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="keyword">namespace </span>{
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="comment">// cMaxK sets the balance between memory/precalculations required and the number</span>
-<a name="l00119"></a>00119 <span class="comment">// of calculations required for an exponentiation. Increasing it can only reduce</span>
-<a name="l00120"></a>00120 <span class="comment">// the calculations by a small amount, whereas it increases the memory</span>
-<a name="l00121"></a>00121 <span class="comment">// requirements and number of precalculations by an exponential amount. 8</span>
-<a name="l00122"></a>00122 <span class="comment">// provides a good balance.</span>
-<a name="l00123"></a>00123 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cMaxK=8;
-<a name="l00124"></a>00124 <span class="keyword">typedef</span> boost::uint_t<cMaxK>::fast kbitdigit_t; <span class="comment">// k bits have to fit into it</span>
-<a name="l00125"></a>00125 <span class="keyword">typedef</span> std::vector<kbitdigit_t> vkbitdigit_t;
-<a name="l00126"></a>00126 <span class="keyword">typedef</span> std::vector<integer> vxint_t;
-<a name="l00127"></a><a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">00127</a> <span class="preprocessor">#define ddPowerOfTwo(p) (doubledigit_t(1) << p)</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span>
-<a name="l00129"></a>00129 <span class="comment">// The splitIntoKBitDigits function assumes that cMaxK <= bits_per_digit+1,</span>
-<a name="l00130"></a>00130 <span class="comment">// it won't work properly if it isn't.</span>
-<a name="l00131"></a>00131 BOOST_STATIC_ASSERT(cMaxK <= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>+1);
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keyword">class </span>TUTable {
-<a name="l00134"></a>00134 <span class="keyword">public</span>:
-<a name="l00135"></a>00135 <span class="keyword">typedef</span> std::pair<int, int> value_t;
+<a name="l00116"></a>00116 <span class="comment">// cMaxK sets the balance between memory/precalculations required and the number</span>
+<a name="l00117"></a>00117 <span class="comment">// of calculations required for an exponentiation. Increasing it can only reduce</span>
+<a name="l00118"></a>00118 <span class="comment">// the calculations by a small amount, whereas it increases the memory</span>
+<a name="l00119"></a>00119 <span class="comment">// requirements and number of precalculations by an exponential amount. 8</span>
+<a name="l00120"></a>00120 <span class="comment">// provides a good balance.</span>
+<a name="l00121"></a>00121 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cMaxK=8;
+<a name="l00122"></a>00122 <span class="keyword">typedef</span> boost::uint_t<cMaxK>::fast kbitdigit_t; <span class="comment">// k bits have to fit into it</span>
+<a name="l00123"></a>00123 <span class="keyword">typedef</span> std::vector<kbitdigit_t> vkbitdigit_t;
+<a name="l00124"></a>00124 <span class="keyword">typedef</span> std::vector<integer> vxint_t;
+<a name="l00125"></a><a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">00125</a> <span class="preprocessor">#define ddPowerOfTwo(p) (doubledigit_t(1) << p)</span>
+<a name="l00126"></a>00126 <span class="preprocessor"></span>
+<a name="l00127"></a>00127 <span class="comment">// The splitIntoKBitDigits function assumes that cMaxK <= bits_per_digit+1,</span>
+<a name="l00128"></a>00128 <span class="comment">// it won't work properly if it isn't.</span>
+<a name="l00129"></a>00129 BOOST_STATIC_ASSERT(cMaxK <= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>+1);
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">class </span>TUTable {
+<a name="l00132"></a>00132 <span class="keyword">public</span>:
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> std::pair<int, int> value_t;
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keyword">const</span> value_t& operator[](<span class="keywordtype">size_t</span> x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[x]; }
<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="keyword">const</span> value_t& operator[](<span class="keywordtype">size_t</span> x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[x]; }
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">const</span> TUTable& <span class="keyword">get</span>() {
-<a name="l00140"></a>00140 <span class="comment">// Construct a singleton instance on demand</span>
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (mPtr.get()==0) mPtr.reset(<span class="keyword">new</span> TUTable);
-<a name="l00142"></a>00142 <span class="keywordflow">return</span> *mPtr;
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 <span class="keyword">private</span>:
-<a name="l00146"></a>00146 TUTable(): <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>(new value_t[<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK)]) {
-<a name="l00147"></a>00147 value_t *p=&<a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[0], *pe=p+<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK);
-<a name="l00148"></a>00148 *p++=std::make_pair(0, 0);
-<a name="l00149"></a>00149 <span class="keywordtype">int</span> i=1;
-<a name="l00150"></a>00150 <span class="keywordflow">while</span> (p!=pe) *p++=calculateValues(i++);
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 std::pair<int, int> calculateValues(<span class="keywordtype">int</span> x) {
-<a name="l00154"></a>00154 <span class="keywordtype">int</span> r=0;
-<a name="l00155"></a>00155 <span class="keywordflow">while</span> (1) {
-<a name="l00156"></a>00156 <span class="keywordflow">if</span> (x & 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
-<a name="l00157"></a>00157 ++r;
-<a name="l00158"></a>00158 x >>= 1;
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 }
+<a name="l00137"></a>00137 <span class="keyword">static</span> <span class="keyword">const</span> TUTable& <span class="keyword">get</span>() {
+<a name="l00138"></a>00138 <span class="comment">// Construct a singleton instance on demand</span>
+<a name="l00139"></a>00139 <span class="keywordflow">if</span> (mPtr.get()==0) mPtr.reset(<span class="keyword">new</span> TUTable);
+<a name="l00140"></a>00140 <span class="keywordflow">return</span> *mPtr;
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 <span class="keyword">private</span>:
+<a name="l00144"></a>00144 TUTable(): <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>(new value_t[<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK)]) {
+<a name="l00145"></a>00145 value_t *p=&<a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[0], *pe=p+<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK);
+<a name="l00146"></a>00146 *p++=std::make_pair(0, 0);
+<a name="l00147"></a>00147 <span class="keywordtype">int</span> i=1;
+<a name="l00148"></a>00148 <span class="keywordflow">while</span> (p!=pe) *p++=calculateValues(i++);
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 std::pair<int, int> calculateValues(<span class="keywordtype">int</span> x) {
+<a name="l00152"></a>00152 <span class="keywordtype">int</span> r=0;
+<a name="l00153"></a>00153 <span class="keywordflow">while</span> (1) {
+<a name="l00154"></a>00154 <span class="keywordflow">if</span> (x & 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
+<a name="l00155"></a>00155 ++r;
+<a name="l00156"></a>00156 x >>= 1;
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keyword">static</span> std::auto_ptr<TUTable> mPtr;
<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="keyword">static</span> std::auto_ptr<TUTable> mPtr;
-<a name="l00163"></a>00163
-<a name="l00164"></a><a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">00164</a> boost::scoped_array<value_t> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>;
-<a name="l00165"></a>00165 };
+<a name="l00162"></a><a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">00162</a> boost::scoped_array<value_t> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>;
+<a name="l00163"></a>00163 };
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 std::auto_ptr<TUTable> TUTable::mPtr;
<a name="l00166"></a>00166
-<a name="l00167"></a>00167 std::auto_ptr<TUTable> TUTable::mPtr;
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> integer& e) {
-<a name="l00170"></a>00170 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> k=cMaxK, kTarget=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(e)-1;
-<a name="l00171"></a>00171 <span class="keywordflow">while</span> (k > 1 && ((k - 1) * (k << ((k - 1) << 1))
-<a name="l00172"></a>00172 / (<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k) - k - 1)) >= kTarget)
-<a name="l00173"></a>00173 --k;
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> int(k);
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 vxint_t precalculateOddPowersOfAa(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer&
-<a name="l00178"></a>00178 r, <span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> k)
-<a name="l00179"></a>00179 {
-<a name="l00180"></a>00180 integer aa=a*r%n, aSquared=a*a%n;
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 vxint_t rval;
-<a name="l00183"></a>00183 rval.reserve(<span class="keywordtype">size_t</span>(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)));
-<a name="l00184"></a>00184 rval.push_back(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()); <span class="comment">// Anything to the zeroth power is one</span>
-<a name="l00185"></a>00185 rval.push_back(aa); <span class="comment">// Anything to the first power is itself</span>
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> i=3, ie=(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)); i<ie; i+=2) {
-<a name="l00188"></a>00188 aa=aa*aSquared%n;
-<a name="l00189"></a>00189 rval.push_back(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>()); <span class="comment">// Even powers not needed or calculated</span>
-<a name="l00190"></a>00190 rval.push_back(aa); <span class="comment">// Odd power</span>
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="keywordflow">return</span> rval;
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 vkbitdigit_t splitIntoKBitDigits(<span class="keyword">const</span> integer& e, <span class="keywordtype">size_t</span> k) {
-<a name="l00197"></a>00197 <span class="keywordtype">size_t</span> eBits=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(e), eDigits=(eBits+k-1)/k, i=0, bitsInHopper=0;
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 vkbitdigit_t rval;
-<a name="l00200"></a>00200 rval.reserve(eDigits);
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> hopper=0, mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1)<<k)-1;
-<a name="l00203"></a>00203 <span class="keywordflow">while</span> (eDigits-- > 0) {
-<a name="l00204"></a>00204 <span class="keywordflow">if</span> (bitsInHopper < k && i < e._get_length()) {
-<a name="l00205"></a>00205 <span class="comment">// Add more bits to the hopper</span>
-<a name="l00206"></a>00206 hopper = hopper | (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(e._get_digit(i++)) << bitsInHopper);
-<a name="l00207"></a>00207 bitsInHopper += <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="comment">// Grab k bits off the bottom</span>
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (bitsInHopper > 0) {
-<a name="l00212"></a>00212 rval.push_back(kbitdigit_t(hopper & mask));
-<a name="l00213"></a>00213 hopper >>= k;
-<a name="l00214"></a>00214 bitsInHopper-=k;
-<a name="l00215"></a>00215 } <span class="keywordflow">else</span> {
-<a name="l00216"></a>00216 rval.push_back(0);
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keywordflow">return</span> rval;
-<a name="l00221"></a>00221 }
+<a name="l00167"></a>00167 <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> integer& e) {
+<a name="l00168"></a>00168 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> k=cMaxK, kTarget=<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(e)-1;
+<a name="l00169"></a>00169 <span class="keywordflow">while</span> (k > 1 && ((k - 1) * (k << ((k - 1) << 1))
+<a name="l00170"></a>00170 / (<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k) - k - 1)) >= kTarget)
+<a name="l00171"></a>00171 --k;
+<a name="l00172"></a>00172 <span class="keywordflow">return</span> int(k);
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 vxint_t precalculateOddPowersOfAa(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer&
+<a name="l00176"></a>00176 r, <span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> k)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 integer aa=a*r%n, aSquared=a*a%n;
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 vxint_t rval;
+<a name="l00181"></a>00181 rval.reserve(<span class="keywordtype">size_t</span>(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)));
+<a name="l00182"></a>00182 rval.push_back(<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()); <span class="comment">// Anything to the zeroth power is one</span>
+<a name="l00183"></a>00183 rval.push_back(aa); <span class="comment">// Anything to the first power is itself</span>
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> i=3, ie=(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)); i<ie; i+=2) {
+<a name="l00186"></a>00186 aa=aa*aSquared%n;
+<a name="l00187"></a>00187 rval.push_back(<a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>()); <span class="comment">// Even powers not needed or calculated</span>
+<a name="l00188"></a>00188 rval.push_back(aa); <span class="comment">// Odd power</span>
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="keywordflow">return</span> rval;
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 vkbitdigit_t splitIntoKBitDigits(<span class="keyword">const</span> integer& e, <span class="keywordtype">size_t</span> k) {
+<a name="l00195"></a>00195 <span class="keywordtype">size_t</span> eBits=<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(e), eDigits=(eBits+k-1)/k, i=0, bitsInHopper=0;
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 vkbitdigit_t rval;
+<a name="l00198"></a>00198 rval.reserve(eDigits);
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> hopper=0, mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1)<<k)-1;
+<a name="l00201"></a>00201 <span class="keywordflow">while</span> (eDigits-- > 0) {
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> (bitsInHopper < k && i < e._get_length()) {
+<a name="l00203"></a>00203 <span class="comment">// Add more bits to the hopper</span>
+<a name="l00204"></a>00204 hopper = hopper | (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(e._get_digit(i++)) << bitsInHopper);
+<a name="l00205"></a>00205 bitsInHopper += <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="comment">// Grab k bits off the bottom</span>
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (bitsInHopper > 0) {
+<a name="l00210"></a>00210 rval.push_back(kbitdigit_t(hopper & mask));
+<a name="l00211"></a>00211 hopper >>= k;
+<a name="l00212"></a>00212 bitsInHopper-=k;
+<a name="l00213"></a>00213 } <span class="keywordflow">else</span> {
+<a name="l00214"></a>00214 rval.push_back(0);
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> rval;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 } <span class="comment">// namespace</span>
<a name="l00222"></a>00222
-<a name="l00223"></a>00223 } <span class="comment">// namespace</span>
-<a name="l00224"></a>00224
-<a name="l00228"></a>00228 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& n)
-<a name="l00229"></a>00229 {
-<a name="l00230"></a>00230 <span class="comment">// 0 <= a < n, n is odd</span>
-<a name="l00231"></a>00231 <span class="comment">// Returns a^e mod n</span>
+<a name="l00226"></a>00226 integer <a class="code" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& n)
+<a name="l00227"></a>00227 {
+<a name="l00228"></a>00228 <span class="comment">// 0 <= a < n, n is odd</span>
+<a name="l00229"></a>00229 <span class="comment">// Returns a^e mod n</span>
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 <span class="keyword">const</span> TUTable &tuTable(TUTable::get());
<a name="l00232"></a>00232
-<a name="l00233"></a>00233 <span class="keyword">const</span> TUTable &tuTable(TUTable::get());
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
-<a name="l00236"></a>00236 <span class="keywordflow">if</span> (n.even()) <span class="keywordflow">throw</span> invalid_modulus(<span class="stringliteral">"montgomeryPowerMod requires an odd "</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"modulus"</span>);
-<a name="l00238"></a>00238
-<a name="l00239"></a>00239 <span class="comment">// Precalculate some values</span>
-<a name="l00240"></a>00240 <span class="keyword">const</span> <span class="keywordtype">size_t</span> k(mostEfficientK(e));
-<a name="l00241"></a>00241 <span class="keyword">const</span> integer r(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(n));
-<a name="l00242"></a>00242 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(n));
-<a name="l00243"></a>00243 <span class="keyword">const</span> vxint_t oddPowersOfAa(precalculateOddPowersOfAa(a, r, n, k));
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="comment">// Slice the exponent (e) up into k-bit digits</span>
-<a name="l00246"></a>00246 vkbitdigit_t eDigits(splitIntoKBitDigits(e, k));
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>();
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (n.even()) <span class="keywordflow">throw</span> exceptions::invalid_modulus(<span class="stringliteral">"montgomeryPowerMod "</span>
+<a name="l00235"></a>00235 <span class="stringliteral">"requires an odd modulus"</span>);
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="comment">// Precalculate some values</span>
+<a name="l00238"></a>00238 <span class="keyword">const</span> <span class="keywordtype">size_t</span> k(mostEfficientK(e));
+<a name="l00239"></a>00239 <span class="keyword">const</span> integer r(<a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(n));
+<a name="l00240"></a>00240 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0(<a class="code" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(n));
+<a name="l00241"></a>00241 <span class="keyword">const</span> vxint_t oddPowersOfAa(precalculateOddPowersOfAa(a, r, n, k));
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 <span class="comment">// Slice the exponent (e) up into k-bit digits</span>
+<a name="l00244"></a>00244 vkbitdigit_t eDigits(splitIntoKBitDigits(e, k));
+<a name="l00245"></a>00245
+<a name="l00246"></a>00246 integer pp;
<a name="l00247"></a>00247
-<a name="l00248"></a>00248 integer pp;
-<a name="l00249"></a>00249
-<a name="l00250"></a>00250 kbitdigit_t i=eDigits.back();
-<a name="l00251"></a>00251 eDigits.pop_back();
-<a name="l00252"></a>00252 <span class="keywordflow">if</span> (i == 0) {
-<a name="l00253"></a>00253 pp=r%n;
-<a name="l00254"></a>00254 } <span class="keywordflow">else</span> {
-<a name="l00255"></a>00255 std::pair<int, int> tu=tuTable[i];
-<a name="l00256"></a>00256 pp=oddPowersOfAa[tu.second];
-<a name="l00257"></a>00257 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 <span class="keywordflow">while</span> (!eDigits.empty()) {
-<a name="l00261"></a>00261 i=eDigits.back();
-<a name="l00262"></a>00262 eDigits.pop_back();
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (i == 0) {
-<a name="l00265"></a>00265 <span class="keywordtype">int</span> t=int(k);
-<a name="l00266"></a>00266 <span class="keywordflow">while</span> (t-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
-<a name="l00267"></a>00267 } <span class="keywordflow">else</span> {
-<a name="l00268"></a>00268 std::pair<int, int> tu=tuTable[i];
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270 <span class="keywordtype">size_t</span> s=k-tu.first;
-<a name="l00271"></a>00271 <span class="keywordflow">while</span> (s-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00248"></a>00248 kbitdigit_t i=eDigits.back();
+<a name="l00249"></a>00249 eDigits.pop_back();
+<a name="l00250"></a>00250 <span class="keywordflow">if</span> (i == 0) {
+<a name="l00251"></a>00251 pp=r%n;
+<a name="l00252"></a>00252 } <span class="keywordflow">else</span> {
+<a name="l00253"></a>00253 std::pair<int, int> tu=tuTable[i];
+<a name="l00254"></a>00254 pp=oddPowersOfAa[tu.second];
+<a name="l00255"></a>00255 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="keywordflow">while</span> (!eDigits.empty()) {
+<a name="l00259"></a>00259 i=eDigits.back();
+<a name="l00260"></a>00260 eDigits.pop_back();
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 <span class="keywordflow">if</span> (i == 0) {
+<a name="l00263"></a>00263 <span class="keywordtype">int</span> t=int(k);
+<a name="l00264"></a>00264 <span class="keywordflow">while</span> (t-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00265"></a>00265 } <span class="keywordflow">else</span> {
+<a name="l00266"></a>00266 std::pair<int, int> tu=tuTable[i];
+<a name="l00267"></a>00267
+<a name="l00268"></a>00268 <span class="keywordtype">size_t</span> s=k-tu.first;
+<a name="l00269"></a>00269 <span class="keywordflow">while</span> (s-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, oddPowersOfAa[tu.second], n, nPrime0);
<a name="l00272"></a>00272
-<a name="l00273"></a>00273 pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, oddPowersOfAa[tu.second], n, nPrime0);
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 }
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>(), n, nPrime0);
-<a name="l00280"></a>00280 }
-<a name="l00281"></a>00281
-<a name="l00282"></a>00282 } <span class="comment">// namespace core</span>
-<a name="l00283"></a>00283 } <span class="comment">// namespace xint</span>
-<a name="l00284"></a>00284 } <span class="comment">// namespace boost</span>
+<a name="l00273"></a>00273 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>(), n, nPrime0);
+<a name="l00278"></a>00278 }
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 } <span class="comment">// namespace xint</span>
+<a name="l00281"></a>00281 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/monty_8hpp.html (from r61200, /sandbox/xint/doc/xint__monty_8hpp.html)
==============================================================================
--- /sandbox/xint/doc/xint__monty_8hpp.html (original)
+++ sandbox/xint/doc/monty_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: xint_monty.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: monty.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,48 +26,43 @@
</div>
</div>
<div class="contents">
-<h1>xint_monty.hpp File Reference</h1>
+<h1>monty.hpp File Reference</h1>
<p>Internally-used functions.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Montgomery Reduction functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpef45384829a28a8031424a8c453ceaa0"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core::inverse0</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core::montgomeryR</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint::inverse0</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint::montgomeryR</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Internally-used functions. </p>
<p>This file declares the functions that use the Montgomery Reduction. They are used internally to speed up the xint::powmod function for odd modulii. </p>
-<p>Definition in file <a class="el" href="xint__monty_8hpp_source.html">xint_monty.hpp</a>.</p>
+<p>Definition in file <a class="el" href="monty_8hpp_source.html">monty.hpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/monty_8hpp_source.html (from r61200, /sandbox/xint/doc/xint__monty_8hpp_source.html)
==============================================================================
--- /sandbox/xint/doc/xint__monty_8hpp_source.html (original)
+++ sandbox/xint/doc/monty_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: xint_monty.hpp Source File</title>
+<title>The Extended Integer (XInt) Library: monty.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,7 +24,7 @@
<li>File Members</li>
</ul>
</div>
-<h1>xint_monty.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<h1>monty.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
@@ -37,28 +37,26 @@
<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
-<a name="l00021"></a>00021 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_MONTY_H</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_MONTY_H</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_MONTY_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_MONTY_HPP</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span>
<a name="l00024"></a>00024 <span class="keyword">namespace </span>boost {
<a name="l00025"></a>00025 <span class="keyword">namespace </span>xint {
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>core {
-<a name="l00027"></a>00027
-<a name="l00030"></a>00030 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer& n);
-<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& n);
-<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
-<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
-<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& y, <span class="keyword">const</span> integer&
-<a name="l00035"></a>00035 m, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> nPrime0);
-<a name="l00036"></a>00036 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m);
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 } <span class="comment">// namespace core</span>
-<a name="l00040"></a>00040 } <span class="comment">// namespace xint</span>
-<a name="l00041"></a>00041 } <span class="comment">// namespace boost</span>
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MONTY_H</span>
+<a name="l00026"></a>00026
+<a name="l00029"></a>00029 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer& n);
+<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& n);
+<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
+<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
+<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& y, <span class="keyword">const</span> integer&
+<a name="l00034"></a>00034 m, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> nPrime0);
+<a name="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m);
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 } <span class="comment">// namespace xint</span>
+<a name="l00039"></a>00039 } <span class="comment">// namespace boost</span>
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MONTY_HPP</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespaceboost.html
==============================================================================
--- sandbox/xint/doc/namespaceboost.html (original)
+++ sandbox/xint/doc/namespaceboost.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -30,12 +30,14 @@
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>Move to <a class="el" href="random_8cpp.html" title="Contains the definitions for the random number functions.">random.cpp</a>? </dd></dl>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespaceboost_1_1xint.html
==============================================================================
--- sandbox/xint/doc/namespaceboost_1_1xint.html (original)
+++ sandbox/xint/doc/namespaceboost_1_1xint.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,91 +29,257 @@
</div>
<div class="contents">
<h1>boost::xint Namespace Reference</h1>
-<p>The common functions are within this namespace.
+<p>All the types and functions of the library are within this namespace.
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">core</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">detail</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">detail</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Every exception the library throws is from this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The core integer class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The nothrow_integer class. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__base.html">invalid_base</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">invalid_modulus</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">divide_by_zero</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">cannot_represent</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">no_strong_random</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1overflow__error.html">overflow_error</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::auto_ptr<br class="typebreak"/>
-< <a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">detail::token</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">token</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Used for the exception-blocker. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::function< bool()> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Exception-blocking and -allowing functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6b736a9df3b9afabec548528235f28b6"></a> See the <a class="el" href="exceptions.html">exception-blocking page</a> for details on these functions and how to use them. </p>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">set_random_generator</a> (T *gen)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">exceptions_allowed</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Query whether exceptions are currently allowed or blocked. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">block_exceptions</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporarily prevent the library from throwing blockable exceptions. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">allow_exceptions</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Temprarily counteract an <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a> token to allow all exceptions. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">setbit</a> (<a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">bitwise_and</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">bitwise_or</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">bitwise_xor</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">shift</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, int byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">shift_left</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">shift_right</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a125277404ae139bee70547f2d51d3e0e">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac76235b31dcadded8193443b78743948">setbit</a> (<a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6b82b4f0911b258e82b9c11b4413c8bf">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a09477129544d4bdb08ddd63644683f5c">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab817edabf5a6709c753dc6c07186ea75">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abd4c2a471ad1e603ce5ef032071dd2ef">bitwise_and</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1221efa42739f309024e1715adc58917">bitwise_or</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab4996f013ac222b53bea0b46ff95e1df">bitwise_xor</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad62ca08dc3d7600eee872dc5a95c338c">shift</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4bc41e443d230352f7c099e60f4056f4">shift_left</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a295196e5fa8931578d27468cb5154f07">shift_right</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t byBits)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">compare</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b2, bool ignoresign)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">opt_secure_mode</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379">opt_thread_safe</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">log2</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2745c08384519957ceaf26c3e421d485">compare</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3ae2716e04bebbb74be08845db7132e2">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8782636245af4772735f6e7510a7d3da">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">log2</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad1ffadda01cf8e0b230178a9325d96dc">operator!</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#accccaec2c2a8ccfadfc559adbb7ff6ed">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a43189615a1bfb4904c969efe846cefc6">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aab98cd20fa3761900de197363bac0fcb">operator<</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a002b54ae65c6c265d773e7b491bd90fb">operator></a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8a72cb95a5e25a310215eaa2cc93349f">operator<=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2e213ecd798c6bc331460dff13b35173">operator>=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a69d186688f404f1608663142da86158c">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad51e8e59ad1ff61dcdd462bf9d8acf08">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">operator&</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f6171689ef68ff6672e43a1e24ea494">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac16aa971521ae015a62ec015f1fe56d0">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">operator&</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an integer, lowest byte first. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">nothrow_from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">nothrow_from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">to</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">xint::integer</a> to a built-in integer type. <br/></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad8a1d63acfebbbdfce1047c966682a93">to</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">mod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &by, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m, bool noMontgomery)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">mod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3deaa6f8a44d454129bb06691a6035c7">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &by, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae64aa02c6217ea9f53f25d4f44ddddd1">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa0d4bbcf5391accad798da207180894e">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a02c28345b397cb1508bad8d2bd36ca53">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &m)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Montgomery Reduction functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpef45384829a28a8031424a8c453ceaa0"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">inverse0</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">montgomeryR</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">toMontgomeryForm</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">fromMontgomeryForm</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">montgomeryMultiplyMod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, digit_t nPrime0)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">montgomeryPowerMod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">nothrow_pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">nothrow_factorial</a> (size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">pow2</a> (size_t e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">sqr</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">pow</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">factorial</a> (size_t n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">nothrow_random_prime</a> (size_t size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">random_prime</a> (size_t size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &dividend, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a>, <br class="typebreak"/>
+<a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &d1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &d2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">abs</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">negate</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">add</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">subtract</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">multiply</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &by)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">divide</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &dividend, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &divisor)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">divide_r</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &d1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &d2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">set_random_generator</a> (T *gen)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Self-Testing Functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpe91fba8935c0c10717694cc0393febf3"></a> </p>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">nothrow_random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9d062367dfe2a79e4471c97d1ee101b2">testBitManipulations</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8b1647a9b23f45407df6d402852d06ae">testAddSubtract</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a87d760db18932efaafb906c0ebbdb50f">testMultiply</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aabf845d8d592d3576d7223fc29362b3a">testDivideMod</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca8ead732f9dac3f23f53095eacd762e">testConvert</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ace6d9f008e78329286fc9003896667cd">testStreams</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6073c3037b644655bc752120b144e804">testMontyMultiply</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a099082cd8bbd0e994870ad89859e18c1">testMontyPowerMod</a> ()</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">operator<<</a> (std::basic_ostream< charT, traits > &out, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">operator>></a> (std::basic_istream< charT, traits > &in, <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4b7b76c7fb4b03cf086773a55604d6a2">operator<<</a> (std::basic_ostream< charT, traits > &out, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a01075dbe629f0b3bd58d4d18fce80637">operator>></a> (std::basic_istream< charT, traits > &in, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> &n)</td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a> = (std::numeric_limits<size_t>::max)()</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The common functions are within this namespace. </p>
+<p>All the types and functions of the library are within this namespace. </p>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="a48deb76c9c428a4b3a50177b1b0cb547"></a><!-- doxytag: member="boost::xint::callback_t" ref="a48deb76c9c428a4b3a50177b1b0cb547" args="" -->
<div class="memitem">
@@ -126,303 +292,4251 @@
</div>
<div class="memdoc">
<p>A callback function takes no parameters and returns a bool. </p>
-<dl class="see"><dt><b>See also:</b></dt><dd>xint::is_prime </dd>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">xint::is_prime</a> </dd>
<dd>
-xint::random_prime </dd></dl>
+<a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">xint::random_prime</a> </dd></dl>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00114">114</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00134">134</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a8554e5ef0fa7ba2da83c8f01a9bb1128"></a><!-- doxytag: member="boost::xint::token" ref="a8554e5ef0fa7ba2da83c8f01a9bb1128" args="" -->
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a19a0491b2825f010e9dd66ca50ab5672"></a><!-- doxytag: member="boost::xint::abs" ref="a19a0491b2825f010e9dd66ca50ab5672" args="(const integer &n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef std::auto_ptr<<a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">detail::token</a>> <a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">boost::xint::token</a></td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::abs </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Used for the exception-blocker. </p>
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00109">109</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Returns the absolute value of an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>If <code>n</code> is zero or positive, returns <code>n</code>. Otherwise returns <code>-n</code>. </dd></dl>
</div>
</div>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a6353146e15d8912324f5fa820674a75f"></a><!-- doxytag: member="boost::xint::allow_exceptions" ref="a6353146e15d8912324f5fa820674a75f" args="()" -->
+<a class="anchor" id="a0e114c276fc9affcc068dd5f0fbd9ff9"></a><!-- doxytag: member="boost::xint::abs" ref="a0e114c276fc9affcc068dd5f0fbd9ff9" args="(const nothrow_integer &n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> boost::xint::allow_exceptions </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::abs </td>
<td>(</td>
- <td class="paramname"></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td>
<td> ) </td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
-
-<p>Temprarily counteract an <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a> token to allow all exceptions. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. Until this token is destroyed, blockable exceptions can be thrown, unless explicitly re-blocked.</dd></dl>
-<dl class="note"><dt><b>Note:</b></dt><dd>Exceptions are allowed by default.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>When the library is compiled for <a class="el" href="threadsafe.html">thread-safe operation</a>, exceptions are blocked or allowed on a per-thread basis. Otherwise they are blocked or allowed globally.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="exceptions.html">Exceptions and Exception-Blocking</a> </dd></dl>
+<p>Returns the absolute value of an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>If <code>n</code> is zero or positive, returns <code>n</code>. Otherwise returns <code>-n</code>. </dd></dl>
+ </p>
</div>
</div>
-<a class="anchor" id="a23aac788de86c99b403a691954e016ad"></a><!-- doxytag: member="boost::xint::block_exceptions" ref="a23aac788de86c99b403a691954e016ad" args="()" -->
+<a class="anchor" id="a5f82fa6b23e9af01292440248b89210d"></a><!-- doxytag: member="boost::xint::add" ref="a5f82fa6b23e9af01292440248b89210d" args="(const integer &n1, const integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> boost::xint::block_exceptions </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::add </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Temporarily prevent the library from throwing blockable exceptions. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. Until this token is destroyed, blockable exceptions are blocked, unless explicitly re-enabled.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>When the library is compiled for <a class="el" href="threadsafe.html">thread-safe operation</a>, exceptions are blocked or allowed on a per-thread basis. Otherwise they are blocked or allowed globally.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="exceptions.html">Exceptions and Exception-Blocking</a> </dd></dl>
+<p>Calculate the sum of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to add.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The sum of the parameters. </dd></dl>
</div>
</div>
-<a class="anchor" id="a389e96a85ba1c76ef5bfcf836b7e4e8a"></a><!-- doxytag: member="boost::xint::exceptions_allowed" ref="a389e96a85ba1c76ef5bfcf836b7e4e8a" args="()" -->
+<a class="anchor" id="a7b7903cb879b60d0d5e3403b3c6a1cdd"></a><!-- doxytag: member="boost::xint::add" ref="a7b7903cb879b60d0d5e3403b3c6a1cdd" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::exceptions_allowed </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::add </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Calculate the sum of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to add.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The sum of the parameters. </dd></dl>
+ </p>
-<p>Query whether exceptions are currently allowed or blocked. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if exceptions are currently allowed (the default state), <code>false</code> if they're blocked.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>When the library is compiled for <a class="el" href="threadsafe.html">thread-safe operation</a>, exceptions are blocked or allowed on a per-thread basis. Otherwise they are blocked or allowed globally. </dd></dl>
+</div>
+</div>
+<a class="anchor" id="abd4c2a471ad1e603ce5ef032071dd2ef"></a><!-- doxytag: member="boost::xint::bitwise_and" ref="abd4c2a471ad1e603ce5ef032071dd2ef" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::bitwise_and </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Combine two integers using a bitwise <code>AND</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in both parameters turned on. </dd></dl>
+ </p>
</div>
</div>
-<a class="anchor" id="a0492c49fda91b5f498074d3f812906dd"></a><!-- doxytag: member="boost::xint::opt_secure_mode" ref="a0492c49fda91b5f498074d3f812906dd" args="()" -->
+<a class="anchor" id="ab828c0be1559b60537b959ef75092fb2"></a><!-- doxytag: member="boost::xint::bitwise_and" ref="ab828c0be1559b60537b959ef75092fb2" args="(const integer &n1, const integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::opt_secure_mode </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_and </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if Secure Mode is active, <code>false</code> if it isn't. </dd></dl>
+<p>Combine two integers using a bitwise <code>AND</code> operation. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in both parameters turned on. </dd></dl>
</div>
</div>
-<a class="anchor" id="ac80750e62d5ffa2484332aae4b23d379"></a><!-- doxytag: member="boost::xint::opt_thread_safe" ref="ac80750e62d5ffa2484332aae4b23d379" args="()" -->
+<a class="anchor" id="a1221efa42739f309024e1715adc58917"></a><!-- doxytag: member="boost::xint::bitwise_or" ref="a1221efa42739f309024e1715adc58917" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::opt_thread_safe </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::bitwise_or </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
-
-<p>Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if it was compiled with Thread Safe Operation enabled, <code>false</code> if it wasn't. </dd></dl>
+<p>Combine two integers using a bitwise <code>OR</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter turned on. </dd></dl>
+ </p>
</div>
</div>
-<a class="anchor" id="a201d33fafe577133130cd16dec3422b6"></a><!-- doxytag: member="boost::xint::set_random_generator" ref="a201d33fafe577133130cd16dec3422b6" args="(T *gen)" -->
+<a class="anchor" id="ab38ce0764a4b6433e11e30efa2175fec"></a><!-- doxytag: member="boost::xint::bitwise_or" ref="ab38ce0764a4b6433e11e30efa2175fec" args="(const integer &n1, const integer &n2)" -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T > </div>
<table class="memname">
<tr>
- <td class="memname">void boost::xint::set_random_generator </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_or </td>
<td>(</td>
- <td class="paramtype">T * </td>
- <td class="paramname"> <em>gen</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Change the random generator that the library uses. </p>
+<p>Combine two integers using a bitwise <code>OR</code> operation. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>gen</em> </td><td>A pointer to the new generator to use.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
</table>
</dd>
</dl>
-<dl class="warning"><dt><b>Warning:</b></dt><dd>The generator must be a heap-allocated pointer (one created with <code>new</code>), which the XInt library assumes ownership of. Don't pass in a stack-created item, don't try to delete the item that you passed in, and don't attempt to use it separately after passing it to this function, or the behavior is undefined.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>See the <a class="el" href="random.html">Random Number page</a> for an example of how to use it. </dd></dl>
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00779">779</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter turned on. </dd></dl>
</div>
</div>
-<a class="anchor" id="a8b1647a9b23f45407df6d402852d06ae"></a><!-- doxytag: member="boost::xint::testAddSubtract" ref="a8b1647a9b23f45407df6d402852d06ae" args="()" -->
+<a class="anchor" id="ab4996f013ac222b53bea0b46ff95e1df"></a><!-- doxytag: member="boost::xint::bitwise_xor" ref="ab4996f013ac222b53bea0b46ff95e1df" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testAddSubtract </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::bitwise_xor </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Combine two integers using a bitwise <code>XOR</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
+ </p>
</div>
</div>
-<a class="anchor" id="a9d062367dfe2a79e4471c97d1ee101b2"></a><!-- doxytag: member="boost::xint::testBitManipulations" ref="a9d062367dfe2a79e4471c97d1ee101b2" args="()" -->
+<a class="anchor" id="a6afd5af4550b698f6a7065f457fcb0a1"></a><!-- doxytag: member="boost::xint::bitwise_xor" ref="a6afd5af4550b698f6a7065f457fcb0a1" args="(const integer &n1, const integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testBitManipulations </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_xor </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Combine two integers using a bitwise <code>XOR</code> operation. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
+
</div>
</div>
-<a class="anchor" id="aca8ead732f9dac3f23f53095eacd762e"></a><!-- doxytag: member="boost::xint::testConvert" ref="aca8ead732f9dac3f23f53095eacd762e" args="()" -->
+<a class="anchor" id="a6b82b4f0911b258e82b9c11b4413c8bf"></a><!-- doxytag: member="boost::xint::clearbit" ref="a6b82b4f0911b258e82b9c11b4413c8bf" args="(nothrow_integer &n, size_t bit)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testConvert </td>
+ <td class="memname">void boost::xint::clearbit </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Sets a specific bit in an integer to zero. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+ </p>
</div>
</div>
-<a class="anchor" id="aabf845d8d592d3576d7223fc29362b3a"></a><!-- doxytag: member="boost::xint::testDivideMod" ref="aabf845d8d592d3576d7223fc29362b3a" args="()" -->
+<a class="anchor" id="a96d452df71ac6799a7041647b4b106df"></a><!-- doxytag: member="boost::xint::clearbit" ref="a96d452df71ac6799a7041647b4b106df" args="(integer &n, size_t bit)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testDivideMod </td>
+ <td class="memname">void boost::xint::clearbit </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Sets a specific bit in an integer to zero. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+
</div>
</div>
-<a class="anchor" id="a6073c3037b644655bc752120b144e804"></a><!-- doxytag: member="boost::xint::testMontyMultiply" ref="a6073c3037b644655bc752120b144e804" args="()" -->
+<a class="anchor" id="a2745c08384519957ceaf26c3e421d485"></a><!-- doxytag: member="boost::xint::compare" ref="a2745c08384519957ceaf26c3e421d485" args="(const nothrow_integer &b1, const nothrow_integer &b2, bool ignoresign)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testMontyMultiply </td>
+ <td class="memname">int boost::xint::compare </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>b1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>b2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>ignoresign</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Compare two integer objects. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b1,b2</em> </td><td>The integers to compare. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>ignoresign</em> </td><td>If <code>true</code>, the absolute values of b1 and b2 are compared, instead of their signed values. Used internally.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A negative number if <code>b1</code> < <code>b2</code>; zero if <code>b1</code> == <code>b2</code>, or a positive number if <code>b1</code> > <code>b2</code>.</dd></dl>
+<p>This is the function behind all of the comparison operators. It might sometimes be useful directly as well. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns 0 instead of throwing. </dd></dl>
</div>
</div>
-<a class="anchor" id="a099082cd8bbd0e994870ad89859e18c1"></a><!-- doxytag: member="boost::xint::testMontyPowerMod" ref="a099082cd8bbd0e994870ad89859e18c1" args="()" -->
+<a class="anchor" id="a23f712f01d6589687d2984b1c5efea8b"></a><!-- doxytag: member="boost::xint::compare" ref="a23f712f01d6589687d2984b1c5efea8b" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testMontyPowerMod </td>
+ <td class="memname">int boost::xint::compare </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>ignoresign</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Compare two integer objects. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b1,b2</em> </td><td>The integers to compare. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>ignoresign</em> </td><td>If <code>true</code>, the absolute values of b1 and b2 are compared, instead of their signed values. Used internally.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A negative number if <code>b1</code> < <code>b2</code>; zero if <code>b1</code> == <code>b2</code>, or a positive number if <code>b1</code> > <code>b2</code>.</dd></dl>
+<p>This is the function behind all of the comparison operators. It might sometimes be useful directly as well. </p>
+
</div>
</div>
-<a class="anchor" id="a87d760db18932efaafb906c0ebbdb50f"></a><!-- doxytag: member="boost::xint::testMultiply" ref="a87d760db18932efaafb906c0ebbdb50f" args="()" -->
+<a class="anchor" id="a4892543bb8ccfa8acb188a63a3d4723b"></a><!-- doxytag: member="boost::xint::divide" ref="a4892543bb8ccfa8acb188a63a3d4723b" args="(const integer &dividend, const integer &divisor)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testMultiply </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::divide </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>dividend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>divisor</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>dividend,divisor</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer value of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">exceptions::divide_by_zero</a></em> </td><td>if <code>divisor</code> is zero. </td></tr>
+ </table>
+ </dd>
+</dl>
+
</div>
</div>
-<a class="anchor" id="ace6d9f008e78329286fc9003896667cd"></a><!-- doxytag: member="boost::xint::testStreams" ref="ace6d9f008e78329286fc9003896667cd" args="()" -->
+<a class="anchor" id="a5b884361c54aa64a1974879cb3464c9a"></a><!-- doxytag: member="boost::xint::divide" ref="a5b884361c54aa64a1974879cb3464c9a" args="(const nothrow_integer &dividend, const nothrow_integer &divisor)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::testStreams </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::divide </td>
<td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>dividend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>divisor</em></td><td> </td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>dividend,divisor</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer value of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">exceptions::divide_by_zero</a></em> </td><td>if <code>divisor</code> is zero. </td></tr>
+ </table>
+ </dd>
+</dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a0fff3b235a18c0b3243a1ccc01a68f23"></a><!-- doxytag: member="boost::xint::divide_r" ref="a0fff3b235a18c0b3243a1ccc01a68f23" args="(const integer &d1, const integer &d2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::pair< <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> > boost::xint::divide_r </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d1</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d2</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <code>std::pair</code> containing the quotient and remainder of <code>d1</code> divided by <code>d2</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">exceptions::divide_by_zero</a></em> </td><td>if <code>d2</code> is zero. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa7ba6c482e1526b25e6e946daf3a97ba"></a><!-- doxytag: member="boost::xint::divide_r" ref="aa7ba6c482e1526b25e6e946daf3a97ba" args="(const nothrow_integer &d1, const nothrow_integer &d2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::pair< <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a>, <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> > boost::xint::divide_r </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>d1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>d2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d1</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d2</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <code>std::pair</code> containing the quotient and remainder of <code>d1</code> divided by <code>d2</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">exceptions::divide_by_zero</a></em> </td><td>if <code>d2</code> is zero. </td></tr>
+ </table>
+ </dd>
+</dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns an std::pair with two Not-a-Number values instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a942e346f6e6d069dc19c28e7e56634ab"></a><!-- doxytag: member="boost::xint::factorial" ref="a942e346f6e6d069dc19c28e7e56634ab" args="(size_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::factorial </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of <code>n!</code> </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> factorial, defined as <code>1*2*3*...*n</code></dd></dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>Factorials get ridiculously huge, even with fairly small values of <code>n</code>. This function, when used with a large parameter, is the easiest way to exhaust the system's memory. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a58aa7dc532f0d8a1557c9ec8f512602e"></a><!-- doxytag: member="boost::xint::from_binary" ref="a58aa7dc532f0d8a1557c9ec8f512602e" args="(const std::string &str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::from_binary </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a binary representation of a number into an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>An <code>std::string</code> containing the bytes to convert, lowest byte first.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer representing the bytes.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">xint::to_binary</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af263105e57d48eff5fe14d4d03ca10e1"></a><!-- doxytag: member="boost::xint::from_string" ref="af263105e57d48eff5fe14d4d03ca10e1" args="(const std::string &str, size_t base)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::from_string </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a string into an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>The string to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>the base that the string representation of the number is in. This can be any number between 2 and 36 (inclusive). It can also be the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>, in which case the function will follow the standard C/C++ rules for interpreting a numeric constant: any number with a zero as the first digit is assumed to be base-8; any number with a leading zero-x or zero-X (such as 0x1f) is base-16, and anything else is base-10.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with the numeric value of the string in base <code>base</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">exceptions::overflow_error</a></em> </td><td>if there is not enough free memory to create the integer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">exceptions::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">exceptions::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when reading an integer from a stream, or when contructing one from a string.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8" title="Create an integer from a string representation.">integer::integer(const std::string& str, size_t base)</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a07914d9486e835d2dcea3268937296c4"></a><!-- doxytag: member="boost::xint::fromMontgomeryForm" ref="a07914d9486e835d2dcea3268937296c4" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::fromMontgomeryForm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the integer from the Montgomery form of a number. Used for testing. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3ae2716e04bebbb74be08845db7132e2"></a><!-- doxytag: member="boost::xint::gcd" ref="a3ae2716e04bebbb74be08845db7132e2" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::gcd </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the Greatest Common Denominator of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The greatest common denominator of the two integers, which will always be a positive number. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ab551ac5968fdbcc639318b6f294da2cd"></a><!-- doxytag: member="boost::xint::gcd" ref="ab551ac5968fdbcc639318b6f294da2cd" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::gcd </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the Greatest Common Denominator of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The greatest common denominator of the two integers, which will always be a positive number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a125277404ae139bee70547f2d51d3e0e"></a><!-- doxytag: member="boost::xint::getbit" ref="a125277404ae139bee70547f2d51d3e0e" args="(const nothrow_integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::getbit </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Queries the value of a particular bit in an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit you're asking about.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the specified bit is set (has a value of one), <code>false</code> if it is clear. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns false instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac00836bdc530b3eaf0a9b9f2e208273b"></a><!-- doxytag: member="boost::xint::getbit" ref="ac00836bdc530b3eaf0a9b9f2e208273b" args="(const integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::getbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Queries the value of a particular bit in an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit you're asking about.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the specified bit is set (has a value of one), <code>false</code> if it is clear. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab817edabf5a6709c753dc6c07186ea75"></a><!-- doxytag: member="boost::xint::highestbit" ref="ab817edabf5a6709c753dc6c07186ea75" args="(const nothrow_integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::highestbit </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Obtains the index of the highest bit in an integer with a value of one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the highest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns zero instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aec002c076eff13d0382c5d2cd6de1d60"></a><!-- doxytag: member="boost::xint::highestbit" ref="aec002c076eff13d0382c5d2cd6de1d60" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::highestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Obtains the index of the highest bit in an integer with a value of one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the highest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a50ceb8725ce5a326ef1e43a4d593efac"></a><!-- doxytag: member="boost::xint::inverse0" ref="a50ceb8725ce5a326ef1e43a4d593efac" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> boost::xint::inverse0 </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the low digit of the inverse of a number. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="a02c28345b397cb1508bad8d2bd36ca53"></a><!-- doxytag: member="boost::xint::invmod" ref="a02c28345b397cb1508bad8d2bd36ca53" args="(const nothrow_integer &n, const nothrow_integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::invmod </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the modular inverse of a number in a modulus, if there is one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to retrieve the inverse of. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus to use.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The modular inverse of <code>n</code> in <code>m</code>. If <code>n</code> has no modular inverse in <code>m</code>, returns zero.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">exceptions::invalid_modulus</a></em> </td><td>if the modulus is less than one. </td></tr>
+ </table>
+ </dd>
+</dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns zero instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a1e2477157ea768d8c57fac1c31a8f7ca"></a><!-- doxytag: member="boost::xint::invmod" ref="a1e2477157ea768d8c57fac1c31a8f7ca" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::invmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the modular inverse of a number in a modulus, if there is one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to retrieve the inverse of. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus to use.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The modular inverse of <code>n</code> in <code>m</code>. If <code>n</code> has no modular inverse in <code>m</code>, returns zero.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">exceptions::invalid_modulus</a></em> </td><td>if the modulus is less than one. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a58aa3df545d1da848922c13de2a87fc9"></a><!-- doxytag: member="boost::xint::is_prime" ref="a58aa3df545d1da848922c13de2a87fc9" args="(const integer &n, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::is_prime </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests an integer for primality. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to test. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>1 if <code>n</code> seems to be prime, 0 if it isn't, or -1 if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">exceptions::invalid_argument</a></em> </td><td>if <code>n</code> is less than 2.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the Rabin-Miller probabilistic primality test. There is an infinitesimally small chance that it will think that a composite number is actually prime, but that is so small that it can be ignored for most practical purposes. If even that chance is too much, you can run this function over the number several times, it will use different random "witness" numbers each time.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad581832932a4816cbc9f24740732c3a0"></a><!-- doxytag: member="boost::xint::is_prime" ref="ad581832932a4816cbc9f24740732c3a0" args="(const nothrow_integer &n, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::is_prime </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests an integer for primality. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to test. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>1 if <code>n</code> seems to be prime, 0 if it isn't, or -1 if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">exceptions::invalid_argument</a></em> </td><td>if <code>n</code> is less than 2.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the Rabin-Miller probabilistic primality test. There is an infinitesimally small chance that it will think that a composite number is actually prime, but that is so small that it can be ignored for most practical purposes. If even that chance is too much, you can run this function over the number several times, it will use different random "witness" numbers each time.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns -1 instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8782636245af4772735f6e7510a7d3da"></a><!-- doxytag: member="boost::xint::lcm" ref="a8782636245af4772735f6e7510a7d3da" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::lcm </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the Least Common Multiple of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The least common multiple of the two integers. If either integer is zero, then the return value will be zero, by convention; in all other cases, the return value will be a positive number. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a0096ae57d50e4fe8b5413ea7a4e60495"></a><!-- doxytag: member="boost::xint::lcm" ref="a0096ae57d50e4fe8b5413ea7a4e60495" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::lcm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the Least Common Multiple of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The least common multiple of the two integers. If either integer is zero, then the return value will be zero, by convention; in all other cases, the return value will be a positive number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a206fbae1c02ec96cb274aae1ad611da7"></a><!-- doxytag: member="boost::xint::log2" ref="a206fbae1c02ec96cb274aae1ad611da7" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::log2 </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the log<sub>2</sub> value of an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer log<sub>2</sub> value of the integer.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e">pow2</a>(log2(n)-1) will give you an integer with the highest set bit of <code>n</code>, assuming that <code>n</code> is non-zero.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>Similar to the <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a> function. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns 0 instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0cd277cd7a80cda764f889781f0140cd"></a><!-- doxytag: member="boost::xint::log2" ref="a0cd277cd7a80cda764f889781f0140cd" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::log2 </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the log<sub>2</sub> value of an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer log<sub>2</sub> value of the integer.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e">pow2</a>(log2(n)-1) will give you an integer with the highest set bit of <code>n</code>, assuming that <code>n</code> is non-zero.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>Similar to the <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a> function. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a09477129544d4bdb08ddd63644683f5c"></a><!-- doxytag: member="boost::xint::lowestbit" ref="a09477129544d4bdb08ddd63644683f5c" args="(const nothrow_integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::lowestbit </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Obtains the index of the lowest bit in an integer with a value of one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the lowest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns zero instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a783e728f8221cd424d6f7f5d5f67ec40"></a><!-- doxytag: member="boost::xint::lowestbit" ref="a783e728f8221cd424d6f7f5d5f67ec40" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::lowestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Obtains the index of the lowest bit in an integer with a value of one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the lowest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af91fe435810928b98d6e2b36ea4c3b53"></a><!-- doxytag: member="boost::xint::mod" ref="af91fe435810928b98d6e2b36ea4c3b53" args="(const nothrow_integer &n, const nothrow_integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::mod </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the remainder after dividing a number by another. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> % <code>m</code>. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a9b8c31b64eb9700beea8b95edec31a73"></a><!-- doxytag: member="boost::xint::mod" ref="a9b8c31b64eb9700beea8b95edec31a73" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::mod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the remainder after dividing a number by another. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> % <code>m</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab62e3e69cbc7781a86fc9a0192ef5d37"></a><!-- doxytag: member="boost::xint::montgomeryMultiplyMod" ref="ab62e3e69cbc7781a86fc9a0192ef5d37" args="(const integer &a, const integer &b, const integer &n, digit_t nPrime0)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::montgomeryMultiplyMod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">digit_t </td>
+ <td class="paramname"> <em>nPrime0</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9e0c8f5da23ce668a7b428256f6b8ed4"></a><!-- doxytag: member="boost::xint::montgomeryPowerMod" ref="a9e0c8f5da23ce668a7b428256f6b8ed4" args="(const integer &a, const integer &e, const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::montgomeryPowerMod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5a7360e7330dcc35838ba324c523b395"></a><!-- doxytag: member="boost::xint::montgomeryR" ref="a5a7360e7330dcc35838ba324c523b395" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::montgomeryR </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the most efficient R value for a number and the library's internal representation. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3deaa6f8a44d454129bb06691a6035c7"></a><!-- doxytag: member="boost::xint::mulmod" ref="a3deaa6f8a44d454129bb06691a6035c7" args="(const nothrow_integer &n, const nothrow_integer &by, const nothrow_integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::mulmod </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>by</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the modular product of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to multiply. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> * <code>by</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ac9af74aa79d9cc7f51c57cc7707824ba"></a><!-- doxytag: member="boost::xint::mulmod" ref="ac9af74aa79d9cc7f51c57cc7707824ba" args="(const integer &n, const integer &by, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::mulmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the modular product of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to multiply. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> * <code>by</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a9e0d6ad947fa3e979ed6e26d7e81ab7f"></a><!-- doxytag: member="boost::xint::multiply" ref="a9e0d6ad947fa3e979ed6e26d7e81ab7f" args="(const integer &n, const integer &by)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::multiply </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the product of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The product of the parameters.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Automatically uses the more-efficient squaring algorithm if it can trivially detect that the two parameters are copies of the same number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af844548a421cfc751133081b334dbe4b"></a><!-- doxytag: member="boost::xint::multiply" ref="af844548a421cfc751133081b334dbe4b" args="(const nothrow_integer &n, const nothrow_integer &by)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::multiply </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>by</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the product of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The product of the parameters.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Automatically uses the more-efficient squaring algorithm if it can trivially detect that the two parameters are copies of the same number. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a84190f7b286de191e8026e440f104731"></a><!-- doxytag: member="boost::xint::negate" ref="a84190f7b286de191e8026e440f104731" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::negate </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Return the additive inverse of an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>-n</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aedc1654de47ce6d6635e5339b236f94d"></a><!-- doxytag: member="boost::xint::negate" ref="aedc1654de47ce6d6635e5339b236f94d" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::negate </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Return the additive inverse of an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>-n</code>. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a0098148e09b3c1fb2aed15dc9badc7c6"></a><!-- doxytag: member="boost::xint::nothrow_factorial" ref="a0098148e09b3c1fb2aed15dc9badc7c6" args="(size_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_factorial </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the value of <code>n!</code> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> factorial, defined as <code>1*2*3*...*n</code></dd></dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>Factorials get ridiculously huge, even with fairly small values of <code>n</code>. This function, when used with a large parameter, is the easiest way to exhaust the system's memory. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ab6045aa842481c5175a2d2afbe018ff1"></a><!-- doxytag: member="boost::xint::nothrow_from_binary" ref="ab6045aa842481c5175a2d2afbe018ff1" args="(const std::string &str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_from_binary </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Converts a binary representation of a number into an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>An <code>std::string</code> containing the bytes to convert, lowest byte first.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer representing the bytes.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">xint::to_binary</a> </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ae40f9a912e985490d7291d56e597a464"></a><!-- doxytag: member="boost::xint::nothrow_from_string" ref="ae40f9a912e985490d7291d56e597a464" args="(const std::string &str, size_t base)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_from_string </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Converts a string into an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>The string to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>the base that the string representation of the number is in. This can be any number between 2 and 36 (inclusive). It can also be the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>, in which case the function will follow the standard C/C++ rules for interpreting a numeric constant: any number with a zero as the first digit is assumed to be base-8; any number with a leading zero-x or zero-X (such as 0x1f) is base-16, and anything else is base-10.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with the numeric value of the string in base <code>base</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">exceptions::overflow_error</a></em> </td><td>if there is not enough free memory to create the integer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">exceptions::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">exceptions::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when reading an integer from a stream, or when contructing one from a string.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8" title="Create an integer from a string representation.">integer::integer(const std::string& str, size_t base)</a> </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If the string is <code>#NaN#</code>, then it will return <a class="el" href="nan.html">Not-a-Number</a>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a7dd5b57bcf282d01f39cddf425418287"></a><!-- doxytag: member="boost::xint::nothrow_pow2" ref="a7dd5b57bcf282d01f39cddf425418287" args="(size_t e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_pow2 </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>e</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the value of 2<sup>e</sup> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>2 to the power of <code>e</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a1b55b4b192aa6abc491e3ed8c5ef2627"></a><!-- doxytag: member="boost::xint::nothrow_random_by_size" ref="a1b55b4b192aa6abc491e3ed8c5ef2627" args="(size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_random_by_size </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>high_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>low_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>can_be_negative</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Generates a random integer with specific attributes. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bits</em> </td><td>The maximum number of bits that you want the returned number to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>high_bit_on</em> </td><td>If <code>true</code>, the returned number will have exactly the requested size. If <code>false</code>, the upper bits may be zero, resulting in a number that is slightly smaller than requested. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>low_bit_on</em> </td><td>If <code>true</code>, the returned number will always be odd. If <code>false</code>, it has an equal chance of being odd or even. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>can_be_negative</em> </td><td>If <code>true</code>, the returned value has an equal chance of being positive or negative. If <code>false</code>, it will always be positive.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A random integer with the requested attributes.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the currently-defined random generator.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="aed98791058e6a589b06f8015ae0acaef"></a><!-- doxytag: member="boost::xint::nothrow_random_prime" ref="aed98791058e6a589b06f8015ae0acaef" args="(size_t size_in_bits, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::nothrow_random_prime </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>size_in_bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Generate a randomly-generated prime number of a particular bit-size. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>size_in_bits</em> </td><td>The number of bits that you want the returned value to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A randomly-generated prime integer with the specified number of bits, or zero if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">exceptions::invalid_argument</a></em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function uses <a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">xint::is_prime</a>. See the description of it for details of its limitations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>It also uses the library's currently-set random number generator. See the <a class="el" href="random.html">Random Number Functions page</a> for details on its limitations and requirements, and how to get cryptographically-secure random numbers.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ad1ffadda01cf8e0b230178a9325d96dc"></a><!-- doxytag: member="boost::xint::operator!" ref="ad1ffadda01cf8e0b230178a9325d96dc" args="(const nothrow_integer &num1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator! </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a223232e2fe1af65bbba7b67a10f14f48"></a><!-- doxytag: member="boost::xint::operator!" ref="a223232e2fe1af65bbba7b67a10f14f48" args="(const integer &num1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator! </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a43189615a1bfb4904c969efe846cefc6"></a><!-- doxytag: member="boost::xint::operator!=" ref="a43189615a1bfb4904c969efe846cefc6" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac5d5cb8db57fd0247aa4e36d9b25c492"></a><!-- doxytag: member="boost::xint::operator!=" ref="ac5d5cb8db57fd0247aa4e36d9b25c492" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a115e84b56b4e5e00d0b2b5c8a407ef97"></a><!-- doxytag: member="boost::xint::operator%" ref="a115e84b56b4e5e00d0b2b5c8a407ef97" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator% </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2261cdd3b6c689b76cc379ac515e5d45"></a><!-- doxytag: member="boost::xint::operator%" ref="a2261cdd3b6c689b76cc379ac515e5d45" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator% </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab054d123a003a31c06bac92a1f325805"></a><!-- doxytag: member="boost::xint::operator&" ref="ab054d123a003a31c06bac92a1f325805" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator& </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a97db617d1b8d73ca35c8ef41ec7e9a31"></a><!-- doxytag: member="boost::xint::operator&" ref="a97db617d1b8d73ca35c8ef41ec7e9a31" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator& </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae3770c0e356d50b5f3e2be573e6100cd"></a><!-- doxytag: member="boost::xint::operator*" ref="ae3770c0e356d50b5f3e2be573e6100cd" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aadeb3206628bdfd3112db2d80fff7c92"></a><!-- doxytag: member="boost::xint::operator*" ref="aadeb3206628bdfd3112db2d80fff7c92" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0f6171689ef68ff6672e43a1e24ea494"></a><!-- doxytag: member="boost::xint::operator+" ref="a0f6171689ef68ff6672e43a1e24ea494" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af0e2812ac56a264cd9a86243306ec0fb"></a><!-- doxytag: member="boost::xint::operator+" ref="af0e2812ac56a264cd9a86243306ec0fb" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a69d186688f404f1608663142da86158c"></a><!-- doxytag: member="boost::xint::operator+" ref="a69d186688f404f1608663142da86158c" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7445ea22d360a39fd330f9c53ca550f3"></a><!-- doxytag: member="boost::xint::operator+" ref="a7445ea22d360a39fd330f9c53ca550f3" args="(const nothrow_integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> & boost::xint::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac16aa971521ae015a62ec015f1fe56d0"></a><!-- doxytag: member="boost::xint::operator-" ref="ac16aa971521ae015a62ec015f1fe56d0" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a92ee4f1138215a36f4374a356fa5a359"></a><!-- doxytag: member="boost::xint::operator-" ref="a92ee4f1138215a36f4374a356fa5a359" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad51e8e59ad1ff61dcdd462bf9d8acf08"></a><!-- doxytag: member="boost::xint::operator-" ref="ad51e8e59ad1ff61dcdd462bf9d8acf08" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afbf48bed2400e2eec3fd9544420357f3"></a><!-- doxytag: member="boost::xint::operator-" ref="afbf48bed2400e2eec3fd9544420357f3" args="(const nothrow_integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9a2859e7b5e532eaa0cc51aba4f958c2"></a><!-- doxytag: member="boost::xint::operator/" ref="a9a2859e7b5e532eaa0cc51aba4f958c2" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a83d07bf51fce0b4644b2190278c30413"></a><!-- doxytag: member="boost::xint::operator/" ref="a83d07bf51fce0b4644b2190278c30413" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aab98cd20fa3761900de197363bac0fcb"></a><!-- doxytag: member="boost::xint::operator<" ref="aab98cd20fa3761900de197363bac0fcb" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator< </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af845afe18e9b1326d630e5c0696e679d"></a><!-- doxytag: member="boost::xint::operator<" ref="af845afe18e9b1326d630e5c0696e679d" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator< </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4b7b76c7fb4b03cf086773a55604d6a2"></a><!-- doxytag: member="boost::xint::operator<<" ref="a4b7b76c7fb4b03cf086773a55604d6a2" args="(std::basic_ostream< charT, traits > &out, const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_ostream<charT,traits>& boost::xint::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_ostream< charT, traits > & </td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00316">316</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d1a90f08d8ad3547627f2c2590ab20d"></a><!-- doxytag: member="boost::xint::operator<<" ref="a8d1a90f08d8ad3547627f2c2590ab20d" args="(std::basic_ostream< charT, traits > &out, const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_ostream<charT,traits>& boost::xint::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_ostream< charT, traits > & </td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00304">304</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8a72cb95a5e25a310215eaa2cc93349f"></a><!-- doxytag: member="boost::xint::operator<=" ref="a8a72cb95a5e25a310215eaa2cc93349f" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator<= </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7749bff2e150c55649324ba9797aa6d0"></a><!-- doxytag: member="boost::xint::operator<=" ref="a7749bff2e150c55649324ba9797aa6d0" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator<= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="accccaec2c2a8ccfadfc559adbb7ff6ed"></a><!-- doxytag: member="boost::xint::operator==" ref="accccaec2c2a8ccfadfc559adbb7ff6ed" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a66b558cce023df7b3e10ee22dfe653d0"></a><!-- doxytag: member="boost::xint::operator==" ref="a66b558cce023df7b3e10ee22dfe653d0" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a002b54ae65c6c265d773e7b491bd90fb"></a><!-- doxytag: member="boost::xint::operator>" ref="a002b54ae65c6c265d773e7b491bd90fb" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator> </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab09672bca82a7f4fbdca4443492210bc"></a><!-- doxytag: member="boost::xint::operator>" ref="ab09672bca82a7f4fbdca4443492210bc" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator> </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2e213ecd798c6bc331460dff13b35173"></a><!-- doxytag: member="boost::xint::operator>=" ref="a2e213ecd798c6bc331460dff13b35173" args="(const nothrow_integer &num1, const nothrow_integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator>= </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1ace7bde7533ff9d8a3f38978e7bb046"></a><!-- doxytag: member="boost::xint::operator>=" ref="a1ace7bde7533ff9d8a3f38978e7bb046" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator>= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a01075dbe629f0b3bd58d4d18fce80637"></a><!-- doxytag: member="boost::xint::operator>>" ref="a01075dbe629f0b3bd58d4d18fce80637" args="(std::basic_istream< charT, traits > &in, nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_istream<charT,traits>& boost::xint::operator>> </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_istream< charT, traits > & </td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00328">328</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3a5967ac54c1a269f0b4ed555391ca4f"></a><!-- doxytag: member="boost::xint::operator>>" ref="a3a5967ac54c1a269f0b4ed555391ca4f" args="(std::basic_istream< charT, traits > &in, integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_istream<charT,traits>& boost::xint::operator>> </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_istream< charT, traits > & </td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00330">330</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9524e5e34757cb10a146012bc4192643"></a><!-- doxytag: member="boost::xint::operator^" ref="a9524e5e34757cb10a146012bc4192643" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator^ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2b27999f391ede4a2ec60ee83e6e5060"></a><!-- doxytag: member="boost::xint::operator^" ref="a2b27999f391ede4a2ec60ee83e6e5060" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator^ </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4896e1fc3c8d0adb4911cf5b78304f49"></a><!-- doxytag: member="boost::xint::operator|" ref="a4896e1fc3c8d0adb4911cf5b78304f49" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator| </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae1b86fdde7f84fbcbe39cec5ecc0bc8c"></a><!-- doxytag: member="boost::xint::operator|" ref="ae1b86fdde7f84fbcbe39cec5ecc0bc8c" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::operator| </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0492c49fda91b5f498074d3f812906dd"></a><!-- doxytag: member="boost::xint::opt_secure_mode" ref="a0492c49fda91b5f498074d3f812906dd" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::opt_secure_mode </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if Secure Mode is active, <code>false</code> if it isn't. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac80750e62d5ffa2484332aae4b23d379"></a><!-- doxytag: member="boost::xint::opt_thread_safe" ref="ac80750e62d5ffa2484332aae4b23d379" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::opt_thread_safe </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if it was compiled with Thread Safe Operation enabled, <code>false</code> if it wasn't. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa7d7b30f587c98ad31b8d421b8813c61"></a><!-- doxytag: member="boost::xint::pow" ref="aa7d7b30f587c98ad31b8d421b8813c61" args="(const integer &n, const integer &e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::pow </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of n<sup>e</sup> </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,e</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> to the power of <code>e</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a7f73207284ff1f32b20fb8a6a7a82649"></a><!-- doxytag: member="boost::xint::pow" ref="a7f73207284ff1f32b20fb8a6a7a82649" args="(const nothrow_integer &n, const nothrow_integer &e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::pow </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>e</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the value of n<sup>e</sup> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,e</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> to the power of <code>e</code>. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="af710e4b39cfa66096c202f17d12cc7b7"></a><!-- doxytag: member="boost::xint::pow2" ref="af710e4b39cfa66096c202f17d12cc7b7" args="(size_t e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::pow2 </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>e</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of 2<sup>e</sup> </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>2 to the power of <code>e</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa0d4bbcf5391accad798da207180894e"></a><!-- doxytag: member="boost::xint::powmod" ref="aa0d4bbcf5391accad798da207180894e" args="(const nothrow_integer &n, const nothrow_integer &e, const nothrow_integer &m, bool noMontgomery)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::powmod </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>e</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>noMontgomery</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to exponentiate. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>noMontgomery</em> </td><td>Used for testing, leave false for normal operation.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>pow</code>(n, <code>exponent</code>) % <code>modulus</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">exceptions::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Because this function keeps the intermediate results small, it is far faster and uses far less memory than writing out the equivalent calculations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>In addition, this function will use the Montgomery Reduction internally, if the modulus is an odd number (and if <code>noMontgomery</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a35e7556e9f2d8fb944dbf732ed3f96cd"></a><!-- doxytag: member="boost::xint::powmod" ref="a35e7556e9f2d8fb944dbf732ed3f96cd" args="(const integer &n, const integer &e, const integer &m, bool noMontgomery)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::powmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>noMontgomery</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to exponentiate. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>noMontgomery</em> </td><td>Used for testing, leave false for normal operation.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>pow</code>(n, <code>exponent</code>) % <code>modulus</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">exceptions::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Because this function keeps the intermediate results small, it is far faster and uses far less memory than writing out the equivalent calculations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>In addition, this function will use the Montgomery Reduction internally, if the modulus is an odd number (and if <code>noMontgomery</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac8d879e19a6608b21184236e00806be5"></a><!-- doxytag: member="boost::xint::random_by_size" ref="ac8d879e19a6608b21184236e00806be5" args="(size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::random_by_size </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>high_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>low_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>can_be_negative</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Generates a random integer with specific attributes. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bits</em> </td><td>The maximum number of bits that you want the returned number to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>high_bit_on</em> </td><td>If <code>true</code>, the returned number will have exactly the requested size. If <code>false</code>, the upper bits may be zero, resulting in a number that is slightly smaller than requested. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>low_bit_on</em> </td><td>If <code>true</code>, the returned number will always be odd. If <code>false</code>, it has an equal chance of being odd or even. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>can_be_negative</em> </td><td>If <code>true</code>, the returned value has an equal chance of being positive or negative. If <code>false</code>, it will always be positive.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A random integer with the requested attributes.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the currently-defined random generator.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aaf58d56e1a47ac55e0aa97a55e6fb2c9"></a><!-- doxytag: member="boost::xint::random_prime" ref="aaf58d56e1a47ac55e0aa97a55e6fb2c9" args="(size_t size_in_bits, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::random_prime </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>size_in_bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Generate a randomly-generated prime number of a particular bit-size. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>size_in_bits</em> </td><td>The number of bits that you want the returned value to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A randomly-generated prime integer with the specified number of bits, or zero if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">exceptions::invalid_argument</a></em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function uses <a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">xint::is_prime</a>. See the description of it for details of its limitations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>It also uses the library's currently-set random number generator. See the <a class="el" href="random.html">Random Number Functions page</a> for details on its limitations and requirements, and how to get cryptographically-secure random numbers.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a201d33fafe577133130cd16dec3422b6"></a><!-- doxytag: member="boost::xint::set_random_generator" ref="a201d33fafe577133130cd16dec3422b6" args="(T *gen)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::set_random_generator </td>
+ <td>(</td>
+ <td class="paramtype">T * </td>
+ <td class="paramname"> <em>gen</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Change the random generator that the library uses. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>gen</em> </td><td>A pointer to the new generator to use.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>The generator must be a heap-allocated pointer (one created with <code>new</code>), which the XInt library assumes ownership of. Don't pass in a stack-created item, don't try to delete the item that you passed in, and don't attempt to use it separately after passing it to this function, or the behavior is undefined.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>See the <a class="el" href="random.html">Random Number page</a> for an example of how to use it. </dd></dl>
+
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00102">102</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac76235b31dcadded8193443b78743948"></a><!-- doxytag: member="boost::xint::setbit" ref="ac76235b31dcadded8193443b78743948" args="(nothrow_integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::setbit </td>
+ <td>(</td>
+ <td class="paramtype">nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Sets a specific bit in an integer to one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a6278915cf51b0d448a9db40031226182"></a><!-- doxytag: member="boost::xint::setbit" ref="a6278915cf51b0d448a9db40031226182" args="(integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::setbit </td>
+ <td>(</td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets a specific bit in an integer to one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad62ca08dc3d7600eee872dc5a95c338c"></a><!-- doxytag: member="boost::xint::shift" ref="ad62ca08dc3d7600eee872dc5a95c338c" args="(const nothrow_integer &n, int byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::shift </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Bit-shift an integer, in either direction. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to shift it. If positive, it will shift left, negative will shift right.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="aaed048f3dc3a442152ebffa3f721d014"></a><!-- doxytag: member="boost::xint::shift" ref="aaed048f3dc3a442152ebffa3f721d014" args="(const integer &n, int byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::shift </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Bit-shift an integer, in either direction. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to shift it. If positive, it will shift left, negative will shift right.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a4bc41e443d230352f7c099e60f4056f4"></a><!-- doxytag: member="boost::xint::shift_left" ref="a4bc41e443d230352f7c099e60f4056f4" args="(const nothrow_integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::shift_left </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Left-shift an integer by a specified number of bits. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to left-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ae22c3492ecf08370a9a972c8d6fb8e96"></a><!-- doxytag: member="boost::xint::shift_left" ref="ae22c3492ecf08370a9a972c8d6fb8e96" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::shift_left </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Left-shift an integer by a specified number of bits. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to left-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a295196e5fa8931578d27468cb5154f07"></a><!-- doxytag: member="boost::xint::shift_right" ref="a295196e5fa8931578d27468cb5154f07" args="(const nothrow_integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::shift_right </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Right-shift an integer by a specified number of bits. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to right-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="aca7453fa9e276ebefacc9827b55f69d2"></a><!-- doxytag: member="boost::xint::shift_right" ref="aca7453fa9e276ebefacc9827b55f69d2" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::shift_right </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Right-shift an integer by a specified number of bits. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to right-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="afbba1eeb86e4e7610a75afbb89d594e3"></a><!-- doxytag: member="boost::xint::sqr" ref="afbba1eeb86e4e7610a75afbb89d594e3" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::sqr </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of n<sup>2</sup> </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> times <code>n</code>.</dd></dl>
+<p>This function uses a faster algorithm than the standard multiplication one.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Rewrite this to eliminate the inefficient addOverflow. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a83ce32006b45117f9b3dc6c673fc9f01"></a><!-- doxytag: member="boost::xint::sqr" ref="a83ce32006b45117f9b3dc6c673fc9f01" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::sqr </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the value of n<sup>2</sup> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> times <code>n</code>.</dd></dl>
+<p>This function uses a faster algorithm than the standard multiplication one.<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Rewrite this to eliminate the inefficient addOverflow. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ae64aa02c6217ea9f53f25d4f44ddddd1"></a><!-- doxytag: member="boost::xint::sqrmod" ref="ae64aa02c6217ea9f53f25d4f44ddddd1" args="(const nothrow_integer &n, const nothrow_integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::sqrmod </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the modular product of squaring an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to square. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>sqr(n)</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="adb9a9cb117e7346a3b56c369cd438b0e"></a><!-- doxytag: member="boost::xint::sqrmod" ref="adb9a9cb117e7346a3b56c369cd438b0e" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::sqrmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the modular product of squaring an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to square. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>sqr(n)</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="afdf79cc57e434b9c7f4cb3b6bd68dbd6"></a><!-- doxytag: member="boost::xint::sqrt" ref="afdf79cc57e434b9c7f4cb3b6bd68dbd6" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::sqrt </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the square root of <code>an</code> integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The largest integer that, when squared, is less than or equal to <code>n</code>. If <code>n</code> is not a perfect square, then this value will not be the exact square root.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">exceptions::cannot_represent</a></em> </td><td>if <code>n</code> is negative. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0825d8d9d4644df8d9b6922f5b0d7064"></a><!-- doxytag: member="boost::xint::sqrt" ref="a0825d8d9d4644df8d9b6922f5b0d7064" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::sqrt </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the square root of <code>an</code> integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The largest integer that, when squared, is less than or equal to <code>n</code>. If <code>n</code> is not a perfect square, then this value will not be the exact square root.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">exceptions::cannot_represent</a></em> </td><td>if <code>n</code> is negative. </td></tr>
+ </table>
+ </dd>
+</dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a86eb0099596fe66bd46be244323f44e5"></a><!-- doxytag: member="boost::xint::subtract" ref="a86eb0099596fe66bd46be244323f44e5" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::subtract </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the difference between two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The difference between the parameters. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a385b3869d8dcceab2ffb68ff33c95062"></a><!-- doxytag: member="boost::xint::subtract" ref="a385b3869d8dcceab2ffb68ff33c95062" args="(const nothrow_integer &n1, const nothrow_integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">nothrow_integer</a> boost::xint::subtract </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the difference between two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The difference between the parameters. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ad8a1d63acfebbbdfce1047c966682a93"></a><!-- doxytag: member="boost::xint::to" ref="ad8a1d63acfebbbdfce1047c966682a93" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">T boost::xint::to </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Efficiently converts from an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">xint::integer</a> to a built-in integer type. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type to convert it to.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The numeric value of <code>n</code>, converted to the specified type.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">exceptions::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
+ </table>
+ </dd>
+</dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns T(0) instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00305">305</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae90546b0cb6cf2f27fc5ce65bb43a21e"></a><!-- doxytag: member="boost::xint::to" ref="ae90546b0cb6cf2f27fc5ce65bb43a21e" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">T boost::xint::to </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Efficiently converts from an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">xint::integer</a> to a built-in integer type. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type to convert it to.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The numeric value of <code>n</code>, converted to the specified type.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">exceptions::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00286">286</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0602566ae765c905b4ff84275334a112"></a><!-- doxytag: member="boost::xint::to_binary" ref="a0602566ae765c905b4ff84275334a112" args="(const nothrow_integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::to_binary </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Creates a binary representation of an integer, lowest byte first. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string containing the binary representation.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function only stores the absolute value of <code>n</code>; if you need the sign, you must store it separately.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>A binary representation is sometimes used for persistent storage or transmission, as it is more space-efficient than a string representation.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">xint::from_binary</a> </dd></dl>
+</p>
+<dl class="user"><dt><b>Returns an empty std::string instead of throwing.</b></dt><dd></dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a19124d8eeee95cc7ff1e348c36250eea"></a><!-- doxytag: member="boost::xint::to_binary" ref="a19124d8eeee95cc7ff1e348c36250eea" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::to_binary </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a binary representation of an integer, lowest byte first. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string containing the binary representation.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function only stores the absolute value of <code>n</code>; if you need the sign, you must store it separately.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>A binary representation is sometimes used for persistent storage or transmission, as it is more space-efficient than a string representation.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">xint::from_binary</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a41f8922f3a2328a3c8f0d50264643ca7"></a><!-- doxytag: member="boost::xint::to_string" ref="a41f8922f3a2328a3c8f0d50264643ca7" args="(const nothrow_integer &n, size_t base, bool uppercase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::to_string </td>
+ <td>(</td>
+ <td class="paramtype">const nothrow_integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>uppercase</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Creates a string representation of the specified integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base, between 2 and 36 inclusive, to convert it to. Defaults to base 10. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>uppercase</em> </td><td>Whether to make alphabetic characters (for bases greater than ten) uppercase or not. Defaults to <code>false</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">exceptions::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when you ask the library to write an integer to a stream, but it's more flexible because you can specify any base between 2 and 36. (Streams only allow base-8, base-10, or base-16.) </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Returns an empty std::string instead of throwing.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>If <code>n</code> is Not-a-Number, returns the string <code>#NaN#</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac0454fdc47e70a493c7bf5d92dda33d4"></a><!-- doxytag: member="boost::xint::to_string" ref="ac0454fdc47e70a493c7bf5d92dda33d4" args="(const integer &n, size_t base, bool uppercase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::to_string </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>uppercase</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a string representation of the specified integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base, between 2 and 36 inclusive, to convert it to. Defaults to base 10. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>uppercase</em> </td><td>Whether to make alphabetic characters (for bases greater than ten) uppercase or not. Defaults to <code>false</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">exceptions::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when you ask the library to write an integer to a stream, but it's more flexible because you can specify any base between 2 and 36. (Streams only allow base-8, base-10, or base-16.) </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a512ff2447d52a228c1c9f99fea8fd860"></a><!-- doxytag: member="boost::xint::toMontgomeryForm" ref="a512ff2447d52a228c1c9f99fea8fd860" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::toMontgomeryForm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the Montgomery form of a number. Used for testing. </p>
</div>
</div>
@@ -438,11 +4552,11 @@
</div>
<div class="memdoc">
<p>A value that can be used for the 'base' parameter of the string-to-integer functions </p>
-<dl class="see"><dt><b>See also:</b></dt><dd>xint::integer::integer(const std::string& str, size_t base) </dd>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8" title="Create an integer from a string representation.">xint::integer::integer(const std::string& str, size_t base)</a> </dd>
<dd>
-xint::from_string </dd></dl>
+<a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">xint::from_string</a> </dd></dl>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00124">124</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00144">144</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
@@ -457,16 +4571,16 @@
</div>
<div class="memdoc">
<p>An empty callback_t, used as a default parameter for some functions. </p>
-<dl class="see"><dt><b>See also:</b></dt><dd>xint::is_prime </dd>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">xint::is_prime</a> </dd>
<dd>
-xint::random_prime </dd></dl>
+<a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">xint::random_prime</a> </dd></dl>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00119">119</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00139">139</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespaceboost_1_1xint_1_1blockable.html
==============================================================================
--- sandbox/xint/doc/namespaceboost_1_1xint_1_1blockable.html (original)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1blockable.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,1372 +28,26 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::blockable Namespace Reference</h1>
-<p>Contains the blockable integer type, and functions to operate on it.
-More...</p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="2"><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The blockable integer class. More...<br/></td></tr>
+<h1>boost::xint::blockable Namespace Reference</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a> (<a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, int byBits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b2, bool ignoresign)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">operator<</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">operator></a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">operator<=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">operator>=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a43c166834c838c500713c571ff49ae7c">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">operator&</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">from_binary</a> (const std::string &str)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">to</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &by, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m, bool noMontgomery)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">pow2</a> (size_t e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">factorial</a> (size_t n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a> (size_t size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &by)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &dividend, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &divisor)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::pair< <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &d1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &d2)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">operator<<</a> (std::basic_ostream< charT, traits > &out, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">operator>></a> (std::basic_istream< charT, traits > &in, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9446f097db7b77c04212d7f35f175995">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a43c166834c838c500713c571ff49ae7c">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">operator&</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the blockable integer type, and functions to operate on it. </p>
-<p>The types and functions in the <code>blockable</code> namespace act just like the ones in the <code><a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the "pure" integer type, and functions to operate on it.">xint::core</a></code> namespace, except that they honor exception-blocking and support a Not-a-Number value.</p>
-<dl class="see"><dt><b>See also:</b></dt><dd>exceptions </dd>
-<dd>
-nan </dd></dl>
<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a60245c96acca4efe2301939acb7ca798"></a><!-- doxytag: member="boost::xint::blockable::abs" ref="a60245c96acca4efe2301939acb7ca798" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::abs </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Returns the absolute value of an integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>If <code>n</code> is zero or positive, returns <code>n</code>. Otherwise returns <code>-n</code>. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="ada3b973466beb1c2b2e65718606c1cc8"></a><!-- doxytag: member="boost::xint::blockable::add" ref="ada3b973466beb1c2b2e65718606c1cc8" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::add </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the sum of two integers. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to add.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The sum of the parameters. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a42ded343a54837d6f0ac84399227ac8e"></a><!-- doxytag: member="boost::xint::blockable::bitwise_and" ref="a42ded343a54837d6f0ac84399227ac8e" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::bitwise_and </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>AND</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in both parameters turned on. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a30e1dfd31902219bf24cc843c543469f"></a><!-- doxytag: member="boost::xint::blockable::bitwise_or" ref="a30e1dfd31902219bf24cc843c543469f" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::bitwise_or </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>OR</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter turned on. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="ad3c95f6466b3c77d940838331f9d0c3c"></a><!-- doxytag: member="boost::xint::blockable::bitwise_xor" ref="ad3c95f6466b3c77d940838331f9d0c3c" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::bitwise_xor </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>XOR</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a1731eab251e1601451c3a7c6635c2194"></a><!-- doxytag: member="boost::xint::blockable::clearbit" ref="a1731eab251e1601451c3a7c6635c2194" args="(integer &n, size_t bit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::blockable::clearbit </td>
- <td>(</td>
- <td class="paramtype">integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>bit</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Sets a specific bit in an integer to zero. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="ad4d320afe012be4d62cca1ee985daa95"></a><!-- doxytag: member="boost::xint::blockable::compare" ref="ad4d320afe012be4d62cca1ee985daa95" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int boost::xint::blockable::compare </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>b1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>b2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>ignoresign</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Compare two integer objects. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b1,b2</em> </td><td>The integers to compare. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>ignoresign</em> </td><td>If <code>true</code>, the absolute values of b1 and b2 are compared, instead of their signed values. Used internally.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A negative number if <code>b1</code> < <code>b2</code>; zero if <code>b1</code> == <code>b2</code>, or a positive number if <code>b1</code> > <code>b2</code>.</dd></dl>
-<p>This is the function behind all of the comparison operators. It might sometimes be useful directly as well. </p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns 0 instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a1a69ea437aacb48b0ce224a97eaf87f3"></a><!-- doxytag: member="boost::xint::blockable::divide" ref="a1a69ea437aacb48b0ce224a97eaf87f3" args="(const integer &dividend, const integer &divisor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::divide </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>dividend</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>divisor</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>dividend,divisor</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The integer value of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>divisor</code> is zero. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a022fd3c44ddeb39a78ad3202c51ade8a"></a><!-- doxytag: member="boost::xint::blockable::divide_r" ref="a022fd3c44ddeb39a78ad3202c51ade8a" args="(const integer &d1, const integer &d2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::pair< <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> > boost::xint::blockable::divide_r </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>d1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>d2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d1</em> </td><td>The dividend. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d2</em> </td><td>The divisor.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An <code>std::pair</code> containing the quotient and remainder of <code>d1</code> divided by <code>d2</code>.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>d2</code> is zero. </td></tr>
- </table>
- </dd>
-</dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns an std::pair with two Not-a-Number values instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a48bbd62060daaf179abb8664de24c0c4"></a><!-- doxytag: member="boost::xint::blockable::factorial" ref="a48bbd62060daaf179abb8664de24c0c4" args="(size_t n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::factorial </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of <code>n!</code> <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> factorial, defined as <code>1*2*3*...*n</code></dd></dl>
-<dl class="warning"><dt><b>Warning:</b></dt><dd>Factorials get ridiculously huge, even with fairly small values of <code>n</code>. This function, when used with a large parameter, is the easiest way to exhaust the system's memory. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a2d59a617f6374118f622d37df7e8593b"></a><!-- doxytag: member="boost::xint::blockable::from_binary" ref="a2d59a617f6374118f622d37df7e8593b" args="(const std::string &str)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::from_binary </td>
- <td>(</td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>str</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Converts a binary representation of a number into an integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>An <code>std::string</code> containing the bytes to convert, lowest byte first.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An integer representing the bytes.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd>xint::to_binary </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a90aa8c790fe7241999d14b4fc79e4a00"></a><!-- doxytag: member="boost::xint::blockable::from_string" ref="a90aa8c790fe7241999d14b4fc79e4a00" args="(const std::string &str, size_t base)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::from_string </td>
- <td>(</td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>base</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Converts a string into an integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>The string to convert. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>the base that the string representation of the number is in. This can be any number between 2 and 36 (inclusive). It can also be the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>, in which case the function will follow the standard C/C++ rules for interpreting a numeric constant: any number with a zero as the first digit is assumed to be base-8; any number with a leading zero-x or zero-X (such as 0x1f) is base-16, and anything else is base-10.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with the numeric value of the string in base <code>base</code>. If the string is <code>#NaN#</code>, then it will return <a class="el" href="nan.html">Not-a-Number</a>.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a></em> </td><td>if there is not enough free memory to create the integer. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when reading an integer from a stream, or when contructing one from a string.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f" title="Create an integer from a string representation.">integer::integer(const std::string& str, size_t base)</a> </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a86b6971f33fec78e0186a0e8ce337368"></a><!-- doxytag: member="boost::xint::blockable::gcd" ref="a86b6971f33fec78e0186a0e8ce337368" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::gcd </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the Greatest Common Denominator of two integers. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The greatest common denominator of the two integers, which will always be a positive number. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="afc792f94cf335a3e3dbdf09caae2937d"></a><!-- doxytag: member="boost::xint::blockable::getbit" ref="afc792f94cf335a3e3dbdf09caae2937d" args="(const integer &n, size_t bit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::blockable::getbit </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>bit</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Queries the value of a particular bit in an integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit you're asking about.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the specified bit is set (has a value of one), <code>false</code> if it is clear. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a3bf3a07f92c73e4fbd30452e057522f5"></a><!-- doxytag: member="boost::xint::blockable::highestbit" ref="a3bf3a07f92c73e4fbd30452e057522f5" args="(const integer &n, size_t valueIfZero)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t boost::xint::blockable::highestbit </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>valueIfZero</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Obtains the index of the highest bit in an integer with a value of one. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the highest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a8f5f71a0e2e0c713295ede03d604d636"></a><!-- doxytag: member="boost::xint::blockable::invmod" ref="a8f5f71a0e2e0c713295ede03d604d636" args="(const integer &n, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::invmod </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>m</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the modular inverse of a number in a modulus, if there is one. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to retrieve the inverse of. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus to use.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The modular inverse of <code>n</code> in <code>m</code>. If <code>n</code> has no modular inverse in <code>m</code>, returns zero.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one. </td></tr>
- </table>
- </dd>
-</dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, it returns zero instead of throwing an exception. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a0a6764881137a513c747b893aef16e9d"></a><!-- doxytag: member="boost::xint::blockable::is_prime" ref="a0a6764881137a513c747b893aef16e9d" args="(const integer &n, callback_t callback)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int boost::xint::blockable::is_prime </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">callback_t </td>
- <td class="paramname"> <em>callback</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tests an integer for primality. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to test. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>1 if <code>n</code> seems to be prime, 0 if it isn't, or -1 if the provided callback function cancelled the operation.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>n</code> is less than 2.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the Rabin-Miller probabilistic primality test. There is an infinitesimally small chance that it will think that a composite number is actually prime, but that is so small that it can be ignored for most practical purposes. If even that chance is too much, you can run this function over the number several times, it will use different random "witness" numbers each time.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns -1 instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a312ad948e2c326b228889bdb04131b49"></a><!-- doxytag: member="boost::xint::blockable::lcm" ref="a312ad948e2c326b228889bdb04131b49" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::lcm </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the Least Common Multiple of two integers. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The least common multiple of the two integers. If either integer is zero, then the return value will be zero, by convention; in all other cases, the return value will be a positive number. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="ac761490fc23ecfb5017277529f2bf3a7"></a><!-- doxytag: member="boost::xint::blockable::log2" ref="ac761490fc23ecfb5017277529f2bf3a7" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t boost::xint::blockable::log2 </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the log<sub>2</sub> value of an integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The integer log<sub>2</sub> value of the integer.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(log2(n)-1) will give you an integer with the highest set bit of <code>n</code>, assuming that <code>n</code> is non-zero.</dd></dl>
-<dl class="user"><dt><b></b></dt><dd>Similar to the <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a> function. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns 0 instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9e7a17fbb2cd20db9d1a3431ea6ecdf5"></a><!-- doxytag: member="boost::xint::blockable::lowestbit" ref="a9e7a17fbb2cd20db9d1a3431ea6ecdf5" args="(const integer &n, size_t valueIfZero)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t boost::xint::blockable::lowestbit </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>valueIfZero</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Obtains the index of the lowest bit in an integer with a value of one. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the lowest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a2724cf5153be79d22b53230ae994f653"></a><!-- doxytag: member="boost::xint::blockable::mod" ref="a2724cf5153be79d22b53230ae994f653" args="(const integer &n, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::mod </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>m</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the remainder after dividing a number by another. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The dividend. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The divisor.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> % <code>m</code>. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a455f9442a9d20ee8e5be198c8279d99c"></a><!-- doxytag: member="boost::xint::blockable::mulmod" ref="a455f9442a9d20ee8e5be198c8279d99c" args="(const integer &n, const integer &by, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::mulmod </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>by</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>m</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the modular product of two integers. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to multiply. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> * <code>by</code> % <code>m</code>.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a9f79cef4aca96d97b00f7cde90d7eabd"></a><!-- doxytag: member="boost::xint::blockable::multiply" ref="a9f79cef4aca96d97b00f7cde90d7eabd" args="(const integer &n, const integer &by)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::multiply </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>by</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the product of two integers. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The product of the parameters.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>Automatically uses the more-efficient squaring algorithm if it can trivially detect that the two parameters are copies of the same number. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a99e18d64a42f9a24069cbbe91e1dd035"></a><!-- doxytag: member="boost::xint::blockable::negate" ref="a99e18d64a42f9a24069cbbe91e1dd035" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::negate </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Return the additive inverse of an integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>-n</code>. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="ad590f6564f7b4ba124835dce5a49b6e8"></a><!-- doxytag: member="boost::xint::blockable::operator!" ref="ad590f6564f7b4ba124835dce5a49b6e8" args="(const integer &num1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::blockable::operator! </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a51e46fd4112a2fcff16e11d977f92e63"></a><!-- doxytag: member="boost::xint::blockable::operator!=" ref="a51e46fd4112a2fcff16e11d977f92e63" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::blockable::operator!= </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a13908294b14450d3a12181f8f245baea"></a><!-- doxytag: member="boost::xint::blockable::operator%" ref="a13908294b14450d3a12181f8f245baea" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator% </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aab0835691ea26d99726423b8456c8dce"></a><!-- doxytag: member="boost::xint::blockable::operator&" ref="aab0835691ea26d99726423b8456c8dce" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator& </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5b674570d38ee92b7ed20aec2eedbeb"></a><!-- doxytag: member="boost::xint::blockable::operator*" ref="aa5b674570d38ee92b7ed20aec2eedbeb" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator* </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a43c166834c838c500713c571ff49ae7c"></a><!-- doxytag: member="boost::xint::blockable::operator+" ref="a43c166834c838c500713c571ff49ae7c" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator+ </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab13e7e95fd015038193d3babd65adb83"></a><!-- doxytag: member="boost::xint::blockable::operator+" ref="ab13e7e95fd015038193d3babd65adb83" args="(const integer &a)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::operator+ </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>a</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adde448bbc07e4a347dc78c74fcc8ddbf"></a><!-- doxytag: member="boost::xint::blockable::operator-" ref="adde448bbc07e4a347dc78c74fcc8ddbf" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator- </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aad0456bbbfcf1385355baef6ed7ee368"></a><!-- doxytag: member="boost::xint::blockable::operator-" ref="aad0456bbbfcf1385355baef6ed7ee368" args="(const integer &a)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator- </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>a</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a45485a6d3b99c83332836a100e3159e0"></a><!-- doxytag: member="boost::xint::blockable::operator/" ref="a45485a6d3b99c83332836a100e3159e0" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator/ </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a03cbe2419b28b7d7bc86afe71158108e"></a><!-- doxytag: member="boost::xint::blockable::operator<" ref="a03cbe2419b28b7d7bc86afe71158108e" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::blockable::operator< </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af8e7b16a508aefda2738d854c3a4e55c"></a><!-- doxytag: member="boost::xint::blockable::operator<<" ref="af8e7b16a508aefda2738d854c3a4e55c" args="(std::basic_ostream< charT, traits > &out, const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename charT , typename traits > </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_ostream<charT,traits>& boost::xint::blockable::operator<< </td>
- <td>(</td>
- <td class="paramtype">std::basic_ostream< charT, traits > & </td>
- <td class="paramname"> <em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l01022">1022</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2f826b80a2baf62af87d3335a260ee0d"></a><!-- doxytag: member="boost::xint::blockable::operator<=" ref="a2f826b80a2baf62af87d3335a260ee0d" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::blockable::operator<= </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a30d62778d26a857f5b3ff6a56ebe6e6a"></a><!-- doxytag: member="boost::xint::blockable::operator==" ref="a30d62778d26a857f5b3ff6a56ebe6e6a" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::blockable::operator== </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab3826f291c742f4b980d34cec652173c"></a><!-- doxytag: member="boost::xint::blockable::operator>" ref="ab3826f291c742f4b980d34cec652173c" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::blockable::operator> </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>num2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afab66769cd37ad94e89559e55746a55b"></a><!-- doxytag: member="boost::xint::blockable::operator>=" ref="afab66769cd37ad94e89559e55746a55b" args="(const integer &num1, const integer &num2)" -->
+<a class="anchor" id="a13908294b14450d3a12181f8f245baea"></a><!-- doxytag: member="boost::xint::blockable::operator%" ref="a13908294b14450d3a12181f8f245baea" args="(const integer &num1, const integer &num2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">bool boost::xint::blockable::operator>= </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator% </td>
<td>(</td>
<td class="paramtype">const integer & </td>
<td class="paramname"> <em>num1</em>, </td>
@@ -1413,45 +67,16 @@
</div>
<div class="memdoc">
-</div>
-</div>
-<a class="anchor" id="aced22cdcfc2eec503bf14d495c5642d8"></a><!-- doxytag: member="boost::xint::blockable::operator>>" ref="aced22cdcfc2eec503bf14d495c5642d8" args="(std::basic_istream< charT, traits > &in, integer &n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename charT , typename traits > </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_istream<charT,traits>& boost::xint::blockable::operator>> </td>
- <td>(</td>
- <td class="paramtype">std::basic_istream< charT, traits > & </td>
- <td class="paramname"> <em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">integer & </td>
- <td class="paramname"> <em>n</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l01034">1034</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00031">31</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aabec559201c8efd77965ee8b6f07a4ca"></a><!-- doxytag: member="boost::xint::blockable::operator^" ref="aabec559201c8efd77965ee8b6f07a4ca" args="(const integer &n1, const integer &n2)" -->
+<a class="anchor" id="aab0835691ea26d99726423b8456c8dce"></a><!-- doxytag: member="boost::xint::blockable::operator&" ref="aab0835691ea26d99726423b8456c8dce" args="(const integer &n1, const integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator^ </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator& </td>
<td>(</td>
<td class="paramtype">const integer & </td>
<td class="paramname"> <em>n1</em>, </td>
@@ -1471,50 +96,25 @@
</div>
<div class="memdoc">
-</div>
-</div>
-<a class="anchor" id="ac5d01d4cfdb9adfc4d466811477b4927"></a><!-- doxytag: member="boost::xint::blockable::operator|" ref="ac5d01d4cfdb9adfc4d466811477b4927" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator| </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00032">32</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ab554163bc27a115dbe5310dfc6f515e3"></a><!-- doxytag: member="boost::xint::blockable::pow" ref="ab554163bc27a115dbe5310dfc6f515e3" args="(const integer &n, const integer &e)" -->
+<a class="anchor" id="aa5b674570d38ee92b7ed20aec2eedbeb"></a><!-- doxytag: member="boost::xint::blockable::operator*" ref="aa5b674570d38ee92b7ed20aec2eedbeb" args="(const integer &num1, const integer &num2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::pow </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator* </td>
<td>(</td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramname"> <em>num1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>e</em></td><td> </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
</tr>
<tr>
<td></td>
@@ -1524,71 +124,26 @@
</table>
</div>
<div class="memdoc">
-<p>Calculate the value of n<sup>e</sup> <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,e</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> to the power of <code>e</code>. </dd></dl>
- </p>
-</div>
-</div>
-<a class="anchor" id="a2f16c8a722f5a89748b154dc530ecff5"></a><!-- doxytag: member="boost::xint::blockable::pow2" ref="a2f16c8a722f5a89748b154dc530ecff5" args="(size_t e)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::pow2 </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>e</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of 2<sup>e</sup> <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>2 to the power of <code>e</code>.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. </dd></dl>
- </p>
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00029">29</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a924d7a2c8a1c8817d75d0985ff30ebf0"></a><!-- doxytag: member="boost::xint::blockable::powmod" ref="a924d7a2c8a1c8817d75d0985ff30ebf0" args="(const integer &n, const integer &e, const integer &m, bool noMontgomery)" -->
+<a class="anchor" id="a43c166834c838c500713c571ff49ae7c"></a><!-- doxytag: member="boost::xint::blockable::operator+" ref="a43c166834c838c500713c571ff49ae7c" args="(const integer &num1, const integer &num2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::powmod </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator+ </td>
<td>(</td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>e</em>, </td>
+ <td class="paramname"> <em>num1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>m</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>noMontgomery</em></td><td> </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
</tr>
<tr>
<td></td>
@@ -1598,214 +153,46 @@
</table>
</div>
<div class="memdoc">
-<p>Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to exponentiate. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>noMontgomery</em> </td><td>Used for testing, leave false for normal operation.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>pow</code>(n, <code>exponent</code>) % <code>modulus</code>.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>Because this function keeps the intermediate results small, it is far faster and uses far less memory than writing out the equivalent calculations.</dd></dl>
-<dl class="user"><dt><b></b></dt><dd>In addition, this function will use the Montgomery Reduction internally, if the modulus is an odd number (and if <code>noMontgomery</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
- </p>
-</div>
-</div>
-<a class="anchor" id="a8d6e418a9b7172091f434b7657a02908"></a><!-- doxytag: member="boost::xint::blockable::random_by_size" ref="a8d6e418a9b7172091f434b7657a02908" args="(size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::random_by_size </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>bits</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>high_bit_on</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>low_bit_on</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>can_be_negative</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Generates a random integer with specific attributes. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bits</em> </td><td>The maximum number of bits that you want the returned number to have. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>high_bit_on</em> </td><td>If <code>true</code>, the returned number will have exactly the requested size. If <code>false</code>, the upper bits may be zero, resulting in a number that is slightly smaller than requested. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>low_bit_on</em> </td><td>If <code>true</code>, the returned number will always be odd. If <code>false</code>, it has an equal chance of being odd or even. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>can_be_negative</em> </td><td>If <code>true</code>, the returned value has an equal chance of being positive or negative. If <code>false</code>, it will always be positive.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A random integer with the requested attributes.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the currently-defined random generator.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd>
-<dd>
-<a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
- </p>
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00027">27</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a3db40c31f1d6659d21986bfc96b7a13c"></a><!-- doxytag: member="boost::xint::blockable::random_prime" ref="a3db40c31f1d6659d21986bfc96b7a13c" args="(size_t size_in_bits, callback_t callback)" -->
+<a class="anchor" id="a9446f097db7b77c04212d7f35f175995"></a><!-- doxytag: member="boost::xint::blockable::operator+" ref="a9446f097db7b77c04212d7f35f175995" args="(const integer &a)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::random_prime </td>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>& boost::xint::blockable::operator+ </td>
<td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>size_in_bits</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">callback_t </td>
- <td class="paramname"> <em>callback</em></td><td> </td>
- </tr>
- <tr>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
<td></td>
- <td>)</td>
- <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Generate a randomly-generated prime number of a particular bit-size. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>size_in_bits</em> </td><td>The number of bits that you want the returned value to have. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A randomly-generated prime integer with the specified number of bits, or zero if the provided callback function cancelled the operation.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="note"><dt><b>Note:</b></dt><dd>This function uses xint::is_prime. See the description of it for details of its limitations.</dd></dl>
-<dl class="user"><dt><b></b></dt><dd>It also uses the library's currently-set random number generator. See the <a class="el" href="random.html">Random Number Functions page</a> for details on its limitations and requirements, and how to get cryptographically-secure random numbers.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
- </p>
-</div>
-</div>
-<a class="anchor" id="ad121a71d8a161b9eaea24fcecf378393"></a><!-- doxytag: member="boost::xint::blockable::setbit" ref="ad121a71d8a161b9eaea24fcecf378393" args="(integer &n, size_t bit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::blockable::setbit </td>
- <td>(</td>
- <td class="paramtype">integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>bit</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Sets a specific bit in an integer to one. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
- </p>
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00025">25</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ac096f3f80627f005fd7b4bc69af9f7dd"></a><!-- doxytag: member="boost::xint::blockable::shift" ref="ac096f3f80627f005fd7b4bc69af9f7dd" args="(const integer &n, int byBits)" -->
+<a class="anchor" id="adde448bbc07e4a347dc78c74fcc8ddbf"></a><!-- doxytag: member="boost::xint::blockable::operator-" ref="adde448bbc07e4a347dc78c74fcc8ddbf" args="(const integer &num1, const integer &num2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::shift </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator- </td>
<td>(</td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramname"> <em>num1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>byBits</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Bit-shift an integer, in either direction. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to shift it. If positive, it will shift left, negative will shift right.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a3a09db2ff23e3bf43bb01ffe1137cee8"></a><!-- doxytag: member="boost::xint::blockable::shift_left" ref="a3a09db2ff23e3bf43bb01ffe1137cee8" args="(const integer &n, size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::shift_left </td>
- <td>(</td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>byBits</em></td><td> </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
</tr>
<tr>
<td></td>
@@ -1815,96 +202,46 @@
</table>
</div>
<div class="memdoc">
-<p>Left-shift an integer by a specified number of bits. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to left-shift it.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
- </p>
-</div>
-</div>
-<a class="anchor" id="ad1ac8c13f6b642be791f59a95f58639b"></a><!-- doxytag: member="boost::xint::blockable::shift_right" ref="ad1ac8c13f6b642be791f59a95f58639b" args="(const integer &n, size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::shift_right </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>byBits</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Right-shift an integer by a specified number of bits. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to right-shift it.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
- </p>
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00028">28</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a30c49fd181989bba7260f99d695b66e5"></a><!-- doxytag: member="boost::xint::blockable::sqr" ref="a30c49fd181989bba7260f99d695b66e5" args="(const integer &n)" -->
+<a class="anchor" id="aad0456bbbfcf1385355baef6ed7ee368"></a><!-- doxytag: member="boost::xint::blockable::operator-" ref="aad0456bbbfcf1385355baef6ed7ee368" args="(const integer &a)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::sqr </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator- </td>
<td>(</td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
+ <td class="paramname"> <em>a</em></td>
<td> ) </td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Calculate the value of n<sup>2</sup> <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> times <code>n</code>.</dd></dl>
-<p>This function uses a faster algorithm than the standard multiplication one.<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Rewrite this to eliminate the inefficient addOverflow. </dd></dl>
- </p>
+
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00026">26</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aba0c3ada68c395cf941b4c0fbc574343"></a><!-- doxytag: member="boost::xint::blockable::sqrmod" ref="aba0c3ada68c395cf941b4c0fbc574343" args="(const integer &n, const integer &m)" -->
+<a class="anchor" id="a45485a6d3b99c83332836a100e3159e0"></a><!-- doxytag: member="boost::xint::blockable::operator/" ref="a45485a6d3b99c83332836a100e3159e0" args="(const integer &num1, const integer &num2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::sqrmod </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator/ </td>
<td>(</td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramname"> <em>num1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>m</em></td><td> </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
</tr>
<tr>
<td></td>
@@ -1914,57 +251,17 @@
</table>
</div>
<div class="memdoc">
-<p>Get the modular product of squaring an integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to square. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>sqr(n)</code> % <code>m</code>.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
- </p>
-</div>
-</div>
-<a class="anchor" id="aa2bb7a673045f8a9b517e5903f9c10e5"></a><!-- doxytag: member="boost::xint::blockable::sqrt" ref="aa2bb7a673045f8a9b517e5903f9c10e5" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::sqrt </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the square root of <code>an</code> integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The largest integer that, when squared, is less than or equal to <code>n</code>. If <code>n</code> is not a perfect square, then this value will not be the exact square root.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">xint::cannot_represent</a></em> </td><td>if <code>n</code> is negative. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00030">30</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a56cc023cafb9e92223c74dc780175bc2"></a><!-- doxytag: member="boost::xint::blockable::subtract" ref="a56cc023cafb9e92223c74dc780175bc2" args="(const integer &n1, const integer &n2)" -->
+<a class="anchor" id="aabec559201c8efd77965ee8b6f07a4ca"></a><!-- doxytag: member="boost::xint::blockable::operator^" ref="aabec559201c8efd77965ee8b6f07a4ca" args="(const integer &n1, const integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::subtract </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator^ </td>
<td>(</td>
<td class="paramtype">const integer & </td>
<td class="paramname"> <em>n1</em>, </td>
@@ -1983,111 +280,26 @@
</table>
</div>
<div class="memdoc">
-<p>Calculate the difference between two integers. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The difference between the parameters. </dd></dl>
- </p>
-
-</div>
-</div>
-<a class="anchor" id="a355624609c6e03048b8db0088fe0b436"></a><!-- doxytag: member="boost::xint::blockable::to" ref="a355624609c6e03048b8db0088fe0b436" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T > </div>
- <table class="memname">
- <tr>
- <td class="memname">T boost::xint::blockable::to </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Efficiently converts from an xint::integer to a built-in integer type. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
- </table>
- </dd>
-</dl>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type to convert it to.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The numeric value of <code>n</code>, converted to the specified type.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">xint::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
- </table>
- </dd>
-</dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns T(0) instead of throwing. </dd></dl>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l01010">1010</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="afef5469852d10aefa70e1c69b4433cc9"></a><!-- doxytag: member="boost::xint::blockable::to_binary" ref="afef5469852d10aefa70e1c69b4433cc9" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string boost::xint::blockable::to_binary </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Creates a binary representation of an integer, lowest byte first. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A string containing the binary representation.</dd></dl>
-<dl class="note"><dt><b>Note:</b></dt><dd>This function only stores the absolute value of <code>n</code>; if you need the sign, you must store it separately.</dd></dl>
-<dl class="user"><dt><b>If exceptions are blocked, returns an empty std::string instead of</b></dt><dd>throwing.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>A binary representation is sometimes used for persistent storage or transmission, as it is more space-efficient than a string representation.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd>xint::from_binary </dd></dl>
- </p>
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00034">34</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a242028d310c35165b714a20e068a4e61"></a><!-- doxytag: member="boost::xint::blockable::to_string" ref="a242028d310c35165b714a20e068a4e61" args="(const integer &n, size_t base, bool uppercase)" -->
+<a class="anchor" id="ac5d01d4cfdb9adfc4d466811477b4927"></a><!-- doxytag: member="boost::xint::blockable::operator|" ref="ac5d01d4cfdb9adfc4d466811477b4927" args="(const integer &n1, const integer &n2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">std::string boost::xint::blockable::to_string </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::blockable::operator| </td>
<td>(</td>
<td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>base</em>, </td>
+ <td class="paramname"> <em>n1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>uppercase</em></td><td> </td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
</tr>
<tr>
<td></td>
@@ -2097,29 +309,13 @@
</table>
</div>
<div class="memdoc">
-<p>Creates a string representation of the specified integer. <dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base, between 2 and 36 inclusive, to convert it to. Defaults to base 10. </td></tr>
- <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>uppercase</em> </td><td>Whether to make alphabetic characters (for bases greater than ten) uppercase or not. Defaults to <code>false</code>.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>. If <code>n</code> is Not-a-Number, returns the string <code>#NaN#</code>.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when you ask the library to write an integer to a stream, but it's more flexible because you can specify any base between 2 and 36. (Streams only allow base-8, base-10, or base-16.) </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, it returns an empty string instead of throwing an exception. </dd></dl>
+
+<p>Definition at line <a class="el" href="blockable__operators_8cpp_source.html#l00033">33</a> of file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 01:43:38 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html
==============================================================================
--- sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html (original)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -33,8 +33,6 @@
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for the integer classes. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The core integer class. More...<br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
@@ -190,7 +188,7 @@
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the "pure" integer type, and functions to operate on it. </p>
-<p>The types and functions in the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the "pure" integer type, and functions to operate on it.">xint::core</a> namespace ignore exception-blocking and do not support the Not-a-Number value. If you attempt to assign a Not-a-Number to a <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>, it will throw an <a class="el" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a> exception. </p>
+<p>The types and functions in the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the "pure" integer type, and functions to operate on it.">xint::core</a> namespace ignore exception-blocking and do not support the Not-a-Number value. If you attempt to assign a Not-a-Number to a <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>, it will throw a not_a_number exception. </p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ab1b84a6eb65676fdb85e71c1fe06e792"></a><!-- doxytag: member="boost::xint::core::abs" ref="ab1b84a6eb65676fdb85e71c1fe06e792" args="(const integer &n)" -->
<div class="memitem">
@@ -479,7 +477,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>The integer value of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>divisor</code> is zero. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html">exception::divide_by_zero</a></em> </td><td>if <code>divisor</code> is zero. </td></tr>
</table>
</dd>
</dl>
@@ -522,7 +520,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>An <code>std::pair</code> containing the quotient and remainder of <code>d1</code> divided by <code>d2</code>.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>d2</code> is zero. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html">exception::divide_by_zero</a></em> </td><td>if <code>d2</code> is zero. </td></tr>
</table>
</dd>
</dl>
@@ -618,12 +616,12 @@
</table>
</dd>
</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with the numeric value of the string in base <code>base</code>. If the string is <code>#NaN#</code>, then it will return <a class="el" href="nan.html">Not-a-Number</a>.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with the numeric value of the string in base <code>base</code>.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a></em> </td><td>if there is not enough free memory to create the integer. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1overflow__error.html">exception::overflow_error</a></em> </td><td>if there is not enough free memory to create the integer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">exception::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html">exception::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
</table>
</dd>
</dl>
@@ -827,7 +825,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>The modular inverse of <code>n</code> in <code>m</code>. If <code>n</code> has no modular inverse in <code>m</code>, returns zero.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html">exception::invalid_modulus</a></em> </td><td>if the modulus is less than one. </td></tr>
</table>
</dd>
</dl>
@@ -870,7 +868,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if <code>n</code> seems to be prime, 0 if it isn't, or -1 if the provided callback function cancelled the operation.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>n</code> is less than 2.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html">exception::invalid_argument</a></em> </td><td>if <code>n</code> is less than 2.</td></tr>
</table>
</dd>
</dl>
@@ -1519,7 +1517,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00867">867</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00871">871</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -1658,7 +1656,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00893">893</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00897">897</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -1830,7 +1828,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>pow</code>(n, <code>exponent</code>) % <code>modulus</code>.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html">exception::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
</table>
</dd>
</dl>
@@ -1930,7 +1928,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>A randomly-generated prime integer with the specified number of bits, or zero if the provided callback function cancelled the operation.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html">exception::invalid_argument</a></em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
</table>
</dd>
</dl>
@@ -2181,7 +2179,7 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>The largest integer that, when squared, is less than or equal to <code>n</code>. If <code>n</code> is not a perfect square, then this value will not be the exact square root.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">xint::cannot_represent</a></em> </td><td>if <code>n</code> is negative. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1cannot__represent.html">exception::cannot_represent</a></em> </td><td>if <code>n</code> is negative. </td></tr>
</table>
</dd>
</dl>
@@ -2258,12 +2256,12 @@
<dl class="return"><dt><b>Returns:</b></dt><dd>The numeric value of <code>n</code>, converted to the specified type.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">xint::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1too__big.html">exception::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
</table>
</dd>
</dl>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00850">850</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00853">853</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -2338,10 +2336,10 @@
</table>
</dd>
</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>. If <code>n</code> is Not-a-Number, returns the string <code>#NaN#</code>.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">exception::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
</table>
</dd>
</dl>
@@ -2379,7 +2377,7 @@
</div>
</div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:19 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html
==============================================================================
--- sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html (original)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -33,14 +33,14 @@
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An empty struct, used in <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the magnitude digits of an integer. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1detail_1_1base__integer.html">base_integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for the integer classes. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support class for the random generator code. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the internal details of an xint::integer. More...<br/></td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uintmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uint_t<br class="typebreak"/>
@@ -51,6 +51,14 @@
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">set_random_generator</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a> *obj)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">get_random</a> ()</td></tr>
+<tr><td colspan="2"><div class="groupHeader">The variable-length data_t functions.</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp80e5972139cba853c07c583d1d68268c"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a> (size_t max_digits, size_t initial_length)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">reallocate</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a><> *olddata, size_t newsize)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">duplicate</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a><> *olddata, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a5e040a2d24aaf0c1d4b85fdd0721ee8e">duplicate</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a><> *olddata, <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a><> *data_to_copy, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">deallocate</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a><> *data)</td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">nan_text</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the text representation of the Not-a-Number value. <br/></td></tr>
@@ -78,7 +86,7 @@
<div class="memdoc">
<p>This is the type used to store information about the integer. It must contain at least half the number of bits that a doubledigit_t can hold, and is most memory-efficient when it's exactly that. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00060">60</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00053">53</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
@@ -94,11 +102,116 @@
<div class="memdoc">
<p>This is the type used for calculations. It should be the largest built-in integral type the system can offer, for maximum processing efficiency. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00052">52</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00045">45</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a092b8b90955e65e858dfbdd1cc35b960"></a><!-- doxytag: member="boost::xint::detail::allocate" ref="a092b8b90955e65e858dfbdd1cc35b960" args="(size_t max_digits, size_t initial_length)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * boost::xint::detail::allocate </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>max_digits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>initial_length</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3465b5d474bf9db2df3567fe68e15d33"></a><!-- doxytag: member="boost::xint::detail::deallocate" ref="a3465b5d474bf9db2df3567fe68e15d33" args="(data_t<> *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::deallocate </td>
+ <td>(</td>
+ <td class="paramtype">data_t<> * </td>
+ <td class="paramname"> <em>data</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5e040a2d24aaf0c1d4b85fdd0721ee8e"></a><!-- doxytag: member="boost::xint::detail::duplicate" ref="a5e040a2d24aaf0c1d4b85fdd0721ee8e" args="(data_t<> *olddata, data_t<> *data_to_copy, size_t extra)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * boost::xint::detail::duplicate </td>
+ <td>(</td>
+ <td class="paramtype">data_t<> * </td>
+ <td class="paramname"> <em>olddata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">data_t<> * </td>
+ <td class="paramname"> <em>data_to_copy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>extra</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab5aa26edc4b7699f3ff5d18729732b71"></a><!-- doxytag: member="boost::xint::detail::duplicate" ref="ab5aa26edc4b7699f3ff5d18729732b71" args="(data_t<> *olddata, size_t extra)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * boost::xint::detail::duplicate </td>
+ <td>(</td>
+ <td class="paramtype">data_t<> * </td>
+ <td class="paramname"> <em>olddata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>extra</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a6486d7febde540f90921e9925d077534"></a><!-- doxytag: member="boost::xint::detail::get_random" ref="a6486d7febde540f90921e9925d077534" args="()" -->
<div class="memitem">
<div class="memproto">
@@ -118,6 +231,33 @@
</div>
</div>
+<a class="anchor" id="a756b3b8912e24da52a5f1e54d49bbbbe"></a><!-- doxytag: member="boost::xint::detail::reallocate" ref="a756b3b8912e24da52a5f1e54d49bbbbe" args="(data_t<> *olddata, size_t newsize)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * boost::xint::detail::reallocate </td>
+ <td>(</td>
+ <td class="paramtype">data_t<> * </td>
+ <td class="paramname"> <em>olddata</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>newsize</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a17e1b4fcb11ff18fd2641dc43ee905b8"></a><!-- doxytag: member="boost::xint::detail::set_random_generator" ref="a17e1b4fcb11ff18fd2641dc43ee905b8" args="(base_random_generator *obj)" -->
<div class="memitem">
<div class="memproto">
@@ -151,7 +291,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00064">64</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00057">57</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
@@ -166,7 +306,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00065">65</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00058">58</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
@@ -181,7 +321,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00068">68</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00061">61</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
@@ -196,7 +336,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00067">67</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00060">60</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
@@ -211,7 +351,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00066">66</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00059">59</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
@@ -231,7 +371,7 @@
</div>
</div>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/namespaceboost_1_1xint_1_1exception.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1exception.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exception Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li class="current">Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Namespace List</li>
+ <li>Namespace Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exception.html">exception</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exception Namespace Reference</h1>
+<p>Every exception the library throws is from this namespace.
+More...</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__argument.html">invalid_argument</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__base.html">invalid_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__digit.html">invalid_digit</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1invalid__modulus.html">invalid_modulus</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1divide__by__zero.html">divide_by_zero</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1cannot__represent.html">cannot_represent</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1too__big.html">too_big</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1not__a__number.html">not_a_number</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1no__strong__random.html">no_strong_random</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exception_1_1overflow__error.html">overflow_error</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Every exception the library throws is from this namespace. </p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 19:56:46 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/namespaceboost_1_1xint_1_1exceptions.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1exceptions.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::exceptions Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li class="current">Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Namespace List</li>
+ <li>Namespace Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">exceptions</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::exceptions Namespace Reference</h1>
+<p>Every exception the library throws is from this namespace.
+More...</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__argument.html">invalid_argument</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__base.html">invalid_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__digit.html">invalid_digit</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html">invalid_modulus</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html">divide_by_zero</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">cannot_represent</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1too__big.html">too_big</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1not__a__number.html">not_a_number</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html">no_strong_random</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html">overflow_error</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Every exception the library throws is from this namespace. </p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Modified: sandbox/xint/doc/namespacemembers.html
==============================================================================
--- sandbox/xint/doc/namespacemembers.html (original)
+++ sandbox/xint/doc/namespacemembers.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,7 +38,6 @@
<li>b</li>
<li>c</li>
<li>d</li>
- <li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
@@ -59,15 +58,13 @@
<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
<li>abs()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">boost::xint</a>
</li>
<li>add()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint</a>
</li>
-<li>allow_exceptions()
-: <a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint</a>
+<li>allocate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">boost::xint::detail</a>
</li>
<li>autobase
: <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint</a>
@@ -80,19 +77,13 @@
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">boost::xint::detail</a>
</li>
<li>bitwise_and()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
</li>
<li>bitwise_or()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1221efa42739f309024e1715adc58917">boost::xint</a>
</li>
<li>bitwise_xor()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable</a>
-</li>
-<li>block_exceptions()
-: <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint</a>
</li>
</ul>
@@ -102,17 +93,18 @@
: <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint</a>
</li>
<li>clearbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
</li>
<li>compare()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
+<li>deallocate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">boost::xint::detail</a>
+</li>
<li>digit_hibit
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">boost::xint::detail</a>
</li>
@@ -126,12 +118,10 @@
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">boost::xint::detail</a>
</li>
<li>divide()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">boost::xint</a>
</li>
<li>divide_r()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">boost::xint</a>
</li>
<li>doubledigit_hibit
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">boost::xint::detail</a>
@@ -139,110 +129,92 @@
<li>doubledigit_t
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">boost::xint::detail</a>
</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
-<li>exceptions_allowed()
-: <a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">boost::xint</a>
+<li>duplicate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a5e040a2d24aaf0c1d4b85fdd0721ee8e">boost::xint::detail</a>
</li>
</ul>
<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
<li>factorial()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint</a>
</li>
<li>from_binary()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint</a>
</li>
<li>from_string()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint</a>
</li>
<li>fromMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
<li>gcd()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint</a>
</li>
<li>get_random()
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail</a>
</li>
<li>getbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>highestbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
<li>inverse0()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint</a>
</li>
<li>invmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
</li>
<li>is_prime()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
<li>lcm()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint</a>
</li>
<li>log2()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">boost::xint</a>
</li>
<li>lowestbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a09477129544d4bdb08ddd63644683f5c">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
<li>mod()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint</a>
</li>
<li>montgomeryMultiplyMod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint</a>
</li>
<li>montgomeryPowerMod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint</a>
</li>
<li>montgomeryR()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint</a>
</li>
<li>mulmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a3deaa6f8a44d454129bb06691a6035c7">boost::xint</a>
</li>
<li>multiply()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint</a>
</li>
</ul>
@@ -252,84 +224,83 @@
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">boost::xint::detail</a>
</li>
<li>negate()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">boost::xint</a>
</li>
<li>no_callback
: <a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">boost::xint</a>
</li>
+<li>nothrow_factorial()
+: <a class="el" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">boost::xint</a>
+</li>
+<li>nothrow_from_binary()
+: <a class="el" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">boost::xint</a>
+</li>
+<li>nothrow_from_string()
+: <a class="el" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">boost::xint</a>
+</li>
+<li>nothrow_pow2()
+: <a class="el" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">boost::xint</a>
+</li>
+<li>nothrow_random_by_size()
+: <a class="el" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">boost::xint</a>
+</li>
+<li>nothrow_random_prime()
+: <a class="el" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">boost::xint</a>
+</li>
</ul>
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>operator!()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint</a>
</li>
<li>operator!=()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a43189615a1bfb4904c969efe846cefc6">boost::xint</a>
</li>
<li>operator%()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">boost::xint</a>
</li>
<li>operator&()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint</a>
</li>
<li>operator*()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">boost::xint</a>
</li>
<li>operator+()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">boost::xint</a>
</li>
<li>operator-()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ad51e8e59ad1ff61dcdd462bf9d8acf08">boost::xint</a>
</li>
<li>operator/()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">boost::xint</a>
</li>
<li>operator<()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint</a>
</li>
<li>operator<<()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint</a>
</li>
<li>operator<=()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint</a>
</li>
<li>operator==()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint</a>
</li>
<li>operator>()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a002b54ae65c6c265d773e7b491bd90fb">boost::xint</a>
</li>
<li>operator>=()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2e213ecd798c6bc331460dff13b35173">boost::xint</a>
</li>
<li>operator>>()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint</a>
</li>
<li>operator^()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">boost::xint</a>
</li>
<li>operator|()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">boost::xint</a>
</li>
<li>opt_secure_mode()
: <a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint</a>
@@ -342,28 +313,26 @@
<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
<li>pow()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">boost::xint</a>
</li>
<li>pow2()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint</a>
</li>
<li>powmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
<li>random_by_size()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
</li>
<li>random_prime()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint</a>
+</li>
+<li>reallocate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">boost::xint::detail</a>
</li>
</ul>
@@ -374,86 +343,48 @@
, <a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint</a>
</li>
<li>setbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac76235b31dcadded8193443b78743948">boost::xint</a>
</li>
<li>shift()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
</li>
<li>shift_left()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a4bc41e443d230352f7c099e60f4056f4">boost::xint</a>
</li>
<li>shift_right()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
</li>
<li>sqr()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">boost::xint</a>
</li>
<li>sqrmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint</a>
</li>
<li>sqrt()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint</a>
</li>
<li>subtract()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
-<li>testAddSubtract()
-: <a class="el" href="namespaceboost_1_1xint.html#a8b1647a9b23f45407df6d402852d06ae">boost::xint</a>
-</li>
-<li>testBitManipulations()
-: <a class="el" href="namespaceboost_1_1xint.html#a9d062367dfe2a79e4471c97d1ee101b2">boost::xint</a>
-</li>
-<li>testConvert()
-: <a class="el" href="namespaceboost_1_1xint.html#aca8ead732f9dac3f23f53095eacd762e">boost::xint</a>
-</li>
-<li>testDivideMod()
-: <a class="el" href="namespaceboost_1_1xint.html#aabf845d8d592d3576d7223fc29362b3a">boost::xint</a>
-</li>
-<li>testMontyMultiply()
-: <a class="el" href="namespaceboost_1_1xint.html#a6073c3037b644655bc752120b144e804">boost::xint</a>
-</li>
-<li>testMontyPowerMod()
-: <a class="el" href="namespaceboost_1_1xint.html#a099082cd8bbd0e994870ad89859e18c1">boost::xint</a>
-</li>
-<li>testMultiply()
-: <a class="el" href="namespaceboost_1_1xint.html#a87d760db18932efaafb906c0ebbdb50f">boost::xint</a>
-</li>
-<li>testStreams()
-: <a class="el" href="namespaceboost_1_1xint.html#ace6d9f008e78329286fc9003896667cd">boost::xint</a>
-</li>
<li>to()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">boost::xint</a>
</li>
<li>to_binary()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">boost::xint</a>
</li>
<li>to_string()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core</a>
-</li>
-<li>token
-: <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">boost::xint</a>
</li>
<li>toMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint</a>
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespacemembers_func.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_func.html (original)
+++ sandbox/xint/doc/namespacemembers_func.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,7 +38,6 @@
<li>b</li>
<li>c</li>
<li>d</li>
- <li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
@@ -59,244 +58,216 @@
<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
<li>abs()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">boost::xint</a>
</li>
<li>add()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint</a>
</li>
-<li>allow_exceptions()
-: <a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint</a>
+<li>allocate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">boost::xint::detail</a>
</li>
</ul>
<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
<li>bitwise_and()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
</li>
<li>bitwise_or()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1221efa42739f309024e1715adc58917">boost::xint</a>
</li>
<li>bitwise_xor()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core</a>
-</li>
-<li>block_exceptions()
-: <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab4996f013ac222b53bea0b46ff95e1df">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>clearbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
</li>
<li>compare()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
+<li>deallocate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a3465b5d474bf9db2df3567fe68e15d33">boost::xint::detail</a>
+</li>
<li>divide()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">boost::xint</a>
</li>
<li>divide_r()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint</a>
</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
-<li>exceptions_allowed()
-: <a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">boost::xint</a>
+<li>duplicate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab5aa26edc4b7699f3ff5d18729732b71">boost::xint::detail</a>
</li>
</ul>
<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
<li>factorial()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint</a>
</li>
<li>from_binary()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint</a>
</li>
<li>from_string()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint</a>
</li>
<li>fromMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
<li>gcd()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint</a>
</li>
<li>get_random()
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail</a>
</li>
<li>getbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>highestbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
<li>inverse0()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint</a>
</li>
<li>invmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
</li>
<li>is_prime()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
<li>lcm()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint</a>
</li>
<li>log2()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">boost::xint</a>
</li>
<li>lowestbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a09477129544d4bdb08ddd63644683f5c">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
<li>mod()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint</a>
</li>
<li>montgomeryMultiplyMod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint</a>
</li>
<li>montgomeryPowerMod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint</a>
</li>
<li>montgomeryR()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint</a>
</li>
<li>mulmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a3deaa6f8a44d454129bb06691a6035c7">boost::xint</a>
</li>
<li>multiply()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
<li>negate()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">boost::xint</a>
+</li>
+<li>nothrow_factorial()
+: <a class="el" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">boost::xint</a>
+</li>
+<li>nothrow_from_binary()
+: <a class="el" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">boost::xint</a>
+</li>
+<li>nothrow_from_string()
+: <a class="el" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">boost::xint</a>
+</li>
+<li>nothrow_pow2()
+: <a class="el" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">boost::xint</a>
+</li>
+<li>nothrow_random_by_size()
+: <a class="el" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">boost::xint</a>
+</li>
+<li>nothrow_random_prime()
+: <a class="el" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>operator!()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint</a>
</li>
<li>operator!=()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a43189615a1bfb4904c969efe846cefc6">boost::xint</a>
</li>
<li>operator%()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">boost::xint</a>
</li>
<li>operator&()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint</a>
</li>
<li>operator*()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">boost::xint</a>
</li>
<li>operator+()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">boost::xint</a>
</li>
<li>operator-()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ad51e8e59ad1ff61dcdd462bf9d8acf08">boost::xint</a>
</li>
<li>operator/()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">boost::xint</a>
</li>
<li>operator<()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint</a>
</li>
<li>operator<<()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint</a>
</li>
<li>operator<=()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint</a>
</li>
<li>operator==()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint</a>
</li>
<li>operator>()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a002b54ae65c6c265d773e7b491bd90fb">boost::xint</a>
</li>
<li>operator>=()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2e213ecd798c6bc331460dff13b35173">boost::xint</a>
</li>
<li>operator>>()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint</a>
</li>
<li>operator^()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">boost::xint</a>
</li>
<li>operator|()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">boost::xint</a>
</li>
<li>opt_secure_mode()
: <a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint</a>
@@ -309,28 +280,26 @@
<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
<li>pow()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">boost::xint</a>
</li>
<li>pow2()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint</a>
</li>
<li>powmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
<li>random_by_size()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
</li>
<li>random_prime()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint</a>
+</li>
+<li>reallocate()
+: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a756b3b8912e24da52a5f1e54d49bbbbe">boost::xint::detail</a>
</li>
</ul>
@@ -341,83 +310,48 @@
, <a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint</a>
</li>
<li>setbit()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac76235b31dcadded8193443b78743948">boost::xint</a>
</li>
<li>shift()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
</li>
<li>shift_left()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a4bc41e443d230352f7c099e60f4056f4">boost::xint</a>
</li>
<li>shift_right()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
</li>
<li>sqr()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">boost::xint</a>
</li>
<li>sqrmod()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint</a>
</li>
<li>sqrt()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint</a>
</li>
<li>subtract()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
-<li>testAddSubtract()
-: <a class="el" href="namespaceboost_1_1xint.html#a8b1647a9b23f45407df6d402852d06ae">boost::xint</a>
-</li>
-<li>testBitManipulations()
-: <a class="el" href="namespaceboost_1_1xint.html#a9d062367dfe2a79e4471c97d1ee101b2">boost::xint</a>
-</li>
-<li>testConvert()
-: <a class="el" href="namespaceboost_1_1xint.html#aca8ead732f9dac3f23f53095eacd762e">boost::xint</a>
-</li>
-<li>testDivideMod()
-: <a class="el" href="namespaceboost_1_1xint.html#aabf845d8d592d3576d7223fc29362b3a">boost::xint</a>
-</li>
-<li>testMontyMultiply()
-: <a class="el" href="namespaceboost_1_1xint.html#a6073c3037b644655bc752120b144e804">boost::xint</a>
-</li>
-<li>testMontyPowerMod()
-: <a class="el" href="namespaceboost_1_1xint.html#a099082cd8bbd0e994870ad89859e18c1">boost::xint</a>
-</li>
-<li>testMultiply()
-: <a class="el" href="namespaceboost_1_1xint.html#a87d760db18932efaafb906c0ebbdb50f">boost::xint</a>
-</li>
-<li>testStreams()
-: <a class="el" href="namespaceboost_1_1xint.html#ace6d9f008e78329286fc9003896667cd">boost::xint</a>
-</li>
<li>to()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">boost::xint</a>
</li>
<li>to_binary()
-: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">boost::xint</a>
</li>
<li>to_string()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">boost::xint</a>
</li>
<li>toMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint</a>
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespacemembers_type.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_type.html (original)
+++ sandbox/xint/doc/namespacemembers_type.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -44,12 +44,9 @@
<li>doubledigit_t
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">boost::xint::detail</a>
</li>
-<li>token
-: <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">boost::xint</a>
-</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespacemembers_vars.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_vars.html (original)
+++ sandbox/xint/doc/namespacemembers_vars.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -61,7 +61,7 @@
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/namespaces.html
==============================================================================
--- sandbox/xint/doc/namespaces.html (original)
+++ sandbox/xint/doc/namespaces.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,13 +28,13 @@
<div class="contents">
<h1>Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespaceboost.html">boost</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td><td class="indexvalue">The common functions are within this namespace </td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td><td class="indexvalue">Contains the blockable integer type, and functions to operate on it </td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td><td class="indexvalue">Contains the "pure" integer type, and functions to operate on it </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td><td class="indexvalue">All the types and functions of the library are within this namespace </td></tr>
<tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td><td class="indexvalue">The items within this namespace are meant for internal use only </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a></td><td class="indexvalue">Every exception the library throws is from this namespace </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue"></td></tr>
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/namespacestd.html (from r61200, /sandbox/xint/doc/namespaceboost.html)
==============================================================================
--- /sandbox/xint/doc/namespaceboost.html (original)
+++ sandbox/xint/doc/namespacestd.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: boost Namespace Reference</title>
+<title>The Extended Integer (XInt) Library: std Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,16 +26,13 @@
</div>
</div>
<div class="contents">
-<h1>boost Namespace Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">xint</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
+<h1>std Namespace Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">numeric_limits< boost::xint::integer ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">numeric_limits< boost::xint::nothrow_integer ></a></td></tr>
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/nan.html
==============================================================================
--- sandbox/xint/doc/nan.html (original)
+++ sandbox/xint/doc/nan.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -24,21 +24,21 @@
<div class="contents">
-<h1><a class="anchor" id="nan">The Not-a-Number Value </a></h1><p>Sometimes it's useful for a variable to have a value that doesn't represent any proper value, to indicate that it hasn't been specified or that there was an error in a calculation. For that purpose, the XInt library provides Not-a-Number (which can only be represented by the blockable::integer type).</p>
-<p>To create a Not-a-Number, use the blockable::integer::nan function. No other library function will return a Not-a-Number except under the following circumstances:</p>
+<h1><a class="anchor" id="nan">The Not-a-Number Value </a></h1><p>Sometimes it's useful for a variable to have a value that doesn't represent any proper value, to indicate that it hasn't been specified or that there was an error in a calculation. For that purpose, the <code>nothrow_integer</code> type provides a Not-a-Number value.</p>
+<p>To create a Not-a-Number, use the <code>nothrow_integer::nan</code> function. No other library function will return a Not-a-Number except under the following circumstances:</p>
<ul>
-<li>If a function that returns a <code>blockable::integer</code> tries to throw an exception, but exceptions are blocked.</li>
-<li>If the string-to-integer functions in the <code>blockable</code> namespace are asked to convert the string <code>"#NaN#"</code>.</li>
+<li>If a function that returns a <code>nothrow_integer</code> tries to throw an exception.</li>
+<li>If the string-to-nothrow_integer functions are asked to convert the string <code>"#NaN#"</code>.</li>
</ul>
<p>The only things you can do with a Not-a-Number are:</p>
<ul>
-<li>Test for it, using the member function blockable::integer::is_nan.</li>
+<li>Test for it, using the member function <code>nothrow_integer::is_nan</code>.</li>
<li>Convert it to a string, or write it to a stream. The result will be the string <code>"#NaN#"</code>.</li>
<li>Make a copy of it.</li>
</ul>
-<p>If you attempt to do anything else with it, you will either get an <code>xint::not_a_number</code> exception, or if exceptions are blocked, a special value indicating failure (which will be another Not-a-Number, if the function you're calling returns a <code>blockable::integer</code>). </p>
+<p>If you attempt to do anything else with it, you will get a special value indicating failure (which will be another Not-a-Number, if the function you're calling returns a <code>nothrow_integer</code>). </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/nan_8dox.html
==============================================================================
--- sandbox/xint/doc/nan_8dox.html (original)
+++ sandbox/xint/doc/nan_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/nan.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/nothrow__bit__manipulations_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__bit__manipulations_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_bit_manipulations.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>nothrow_bit_manipulations.cpp File Reference</h1>
+<p>Contains the bit-manipulation functions for the <code>nothrow_integer</code> type.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a125277404ae139bee70547f2d51d3e0e">boost::xint::getbit</a> (const nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac76235b31dcadded8193443b78743948">boost::xint::setbit</a> (nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6b82b4f0911b258e82b9c11b4413c8bf">boost::xint::clearbit</a> (nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a09477129544d4bdb08ddd63644683f5c">boost::xint::lowestbit</a> (const nothrow_integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab817edabf5a6709c753dc6c07186ea75">boost::xint::highestbit</a> (const nothrow_integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abd4c2a471ad1e603ce5ef032071dd2ef">boost::xint::bitwise_and</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1221efa42739f309024e1715adc58917">boost::xint::bitwise_or</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab4996f013ac222b53bea0b46ff95e1df">boost::xint::bitwise_xor</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad62ca08dc3d7600eee872dc5a95c338c">boost::xint::shift</a> (const nothrow_integer &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4bc41e443d230352f7c099e60f4056f4">boost::xint::shift_left</a> (const nothrow_integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a295196e5fa8931578d27468cb5154f07">boost::xint::shift_right</a> (const nothrow_integer &n, size_t byBits)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the bit-manipulation functions for the <code>nothrow_integer</code> type. </p>
+
+<p>Definition in file <a class="el" href="nothrow__bit__manipulations_8cpp_source.html">nothrow_bit_manipulations.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/nothrow__bit__manipulations_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__bit__manipulations_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_bit_manipulations.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_bit_manipulations.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(xint::integer(n), bit);
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00037"></a>00037 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(nothrow_integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00038"></a>00038 <span class="keywordflow">try</span> {
+<a name="l00039"></a>00039 xint::integer nn(n);
+<a name="l00040"></a>00040 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(nn, bit);
+<a name="l00041"></a>00041 n=nothrow_integer(nn);
+<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00043"></a>00043 <span class="comment">// Do nothing</span>
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(nothrow_integer& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00049"></a>00049 <span class="keywordflow">try</span> {
+<a name="l00050"></a>00050 xint::integer nn(n);
+<a name="l00051"></a>00051 <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(nn, bit);
+<a name="l00052"></a>00052 n=nothrow_integer(nn);
+<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00054"></a>00054 <span class="comment">// Do nothing</span>
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00062"></a>00062 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00063"></a>00063 <span class="keywordflow">try</span> {
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(xint::integer(n), valueIfZero);
+<a name="l00065"></a>00065 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> 0;
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069
+<a name="l00074"></a>00074 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00075"></a>00075 <span class="keywordflow">try</span> {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(xint::integer(n), valueIfZero);
+<a name="l00077"></a>00077 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00078"></a>00078 <span class="keywordflow">return</span> 0;
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00083"></a>00083 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00084"></a>00084 <span class="keywordflow">try</span> {
+<a name="l00085"></a>00085 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00086"></a>00086 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00087"></a>00087 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090
+<a name="l00092"></a>00092 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00093"></a>00093 <span class="keywordflow">try</span> {
+<a name="l00094"></a>00094 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00095"></a>00095 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099
+<a name="l00101"></a>00101 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00102"></a>00102 <span class="keywordflow">try</span> {
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00104"></a>00104 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108
+<a name="l00110"></a>00110 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">int</span> byBits) {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
+<a name="l00112"></a>00112 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(n, -byBits);
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114
+<a name="l00116"></a>00116 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00117"></a>00117 <span class="keywordflow">try</span> {
+<a name="l00118"></a>00118 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(xint::integer(n), byBits));
+<a name="l00119"></a>00119 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123
+<a name="l00125"></a>00125 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00126"></a>00126 <span class="keywordflow">try</span> {
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(xint::integer(n), byBits));
+<a name="l00128"></a>00128 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 } <span class="comment">// namespace xint</span>
+<a name="l00134"></a>00134 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/nothrow__compare_8cpp.html (from r61200, /sandbox/xint/doc/blockable__compare_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__compare_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__compare_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_compare.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_compare.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,46 +26,41 @@
</div>
</div>
<div class="contents">
-<h1>blockable_compare.cpp File Reference</h1>
-<p>Contains the the compare function and comparison operators for blockable integers.
+<h1>nothrow_compare.cpp File Reference</h1>
+<p>Contains the the compare function and comparison operators for the <code>nothrow_integer</code> type.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2745c08384519957ceaf26c3e421d485">boost::xint::compare</a> (const nothrow_integer &b1, const nothrow_integer &b2, bool ignoresign)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable::operator!</a> (const integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable::operator==</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable::operator<</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable::operator></a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad1ffadda01cf8e0b230178a9325d96dc">boost::xint::operator!</a> (const nothrow_integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#accccaec2c2a8ccfadfc559adbb7ff6ed">boost::xint::operator==</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a43189615a1bfb4904c969efe846cefc6">boost::xint::operator!=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aab98cd20fa3761900de197363bac0fcb">boost::xint::operator<</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a002b54ae65c6c265d773e7b491bd90fb">boost::xint::operator></a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8a72cb95a5e25a310215eaa2cc93349f">boost::xint::operator<=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2e213ecd798c6bc331460dff13b35173">boost::xint::operator>=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the the compare function and comparison operators for blockable integers. </p>
+<p>Contains the the compare function and comparison operators for the <code>nothrow_integer</code> type. </p>
-<p>Definition in file <a class="el" href="blockable__compare_8cpp_source.html">blockable_compare.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__compare_8cpp_source.html">nothrow_compare.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/nothrow__compare_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__compare_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_compare.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_compare.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> nothrow_integer &b1, <span class="keyword">const</span> nothrow_integer &b2, <span class="keywordtype">bool</span> ignoresign) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(xint::integer(b1), xint::integer(b2));
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">return</span> 0;
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="keyword">namespace </span>{
+<a name="l00037"></a>00037 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00038"></a>00038 <span class="keywordtype">bool</span> cmp(<span class="keyword">const</span> nothrow_integer &num1, <span class="keyword">const</span> nothrow_integer &num2, <span class="keyword">const</span> T& t) {
+<a name="l00039"></a>00039 <span class="keywordflow">try</span> {
+<a name="l00040"></a>00040 <span class="keywordflow">return</span> t(<a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(xint::integer(num1), xint::integer(num2)), 0);
+<a name="l00041"></a>00041 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00042"></a>00042 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 } <span class="comment">// namespace</span>
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(<span class="keyword">const</span> nothrow_integer &num1) {
+<a name="l00048"></a>00048 <span class="keywordflow">try</span> {
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(xint::integer(num1));
+<a name="l00050"></a>00050 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a>(<span class="keyword">const</span> nothrow_integer &num1, <span class="keyword">const</span> nothrow_integer &num2) {
+<a name="l00056"></a>00056 <span class="keywordflow">return</span> cmp(num1, num2, std::equal_to<int>()); }
+<a name="l00057"></a>00057 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> cmp(num1, num2, std::not_equal_to<int>()); }
+<a name="l00059"></a>00059 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> cmp(num1, num2, std::less<int>()); }
+<a name="l00061"></a>00061 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00062"></a>00062 <span class="keywordflow">return</span> cmp(num1, num2, std::greater<int>()); }
+<a name="l00063"></a>00063 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> cmp(num1, num2, std::less_equal<int>()); }
+<a name="l00065"></a>00065 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> cmp(num1, num2, std::greater_equal<int>()); }
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 } <span class="comment">// namespace xint</span>
+<a name="l00069"></a>00069 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/nothrow__convert_8cpp.html (from r61200, /sandbox/xint/doc/blockable__convert_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__convert_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__convert_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_convert.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_convert.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,40 +26,35 @@
</div>
</div>
<div class="contents">
-<h1>blockable_convert.cpp File Reference</h1>
-<p>Contains the conversion functions for blockable integers.
+<h1>nothrow_convert.cpp File Reference</h1>
+<p>Contains the conversion functions for the <code>nothrow_integer</code> type.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable::from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable::from_binary</a> (const std::string &str)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable::to_binary</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">boost::xint::to_string</a> (const nothrow_integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">boost::xint::nothrow_from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">boost::xint::nothrow_from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">boost::xint::to_binary</a> (const nothrow_integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the conversion functions for blockable integers. </p>
-<p>Note that the xint::blockable::to<T> function is not here, because it's a template function and must be defined in a header file. </p>
+<p>Contains the conversion functions for the <code>nothrow_integer</code> type. </p>
+<p>Note that the xint::to<T> function is not here, because it's a template function and must be defined in a header file. </p>
-<p>Definition in file <a class="el" href="blockable__convert_8cpp_source.html">blockable_convert.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__convert_8cpp_source.html">nothrow_convert.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/nothrow__convert_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__convert_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_convert.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_convert.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00021"></a>00021 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>xint {
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">using namespace </span>detail;
+<a name="l00027"></a>00027
+<a name="l00035"></a>00035 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
+<a name="l00036"></a>00036 <span class="keywordflow">try</span> {
+<a name="l00037"></a>00037 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(xint::integer(n), base, uppercase);
+<a name="l00038"></a>00038 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00039"></a>00039 <span class="keywordflow">return</span> std::string();
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042
+<a name="l00047"></a>00047 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">nothrow_from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00048"></a>00048 <span class="keywordflow">try</span> {
+<a name="l00049"></a>00049 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00050"></a>00050 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">xint::from_string</a>(str, base));
+<a name="l00051"></a>00051 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 }
+<a name="l00055"></a>00055
+<a name="l00057"></a>00057 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">nothrow_from_binary</a>(<span class="keyword">const</span> std::string& str) {
+<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">xint::from_binary</a>(str));
+<a name="l00060"></a>00060 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00061"></a>00061 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064
+<a name="l00069"></a>00069 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00070"></a>00070 <span class="keywordflow">try</span> {
+<a name="l00071"></a>00071 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(xint::integer(n));
+<a name="l00072"></a>00072 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> std::string();
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 } <span class="comment">// namespace xint</span>
+<a name="l00078"></a>00078 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/nothrow__gcd_8cpp.html (from r61200, /sandbox/xint/doc/blockable__misc_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__misc_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__gcd_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_misc.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_gcd.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,36 +26,32 @@
</div>
</div>
<div class="contents">
-<h1>blockable_misc.cpp File Reference</h1>
-<p>Functions for blockable integers that don't fall into any other category.
+<h1>nothrow_gcd.cpp File Reference</h1>
+<p>Greatest Common Denominator and Least Common Multple for the <code>nothrow_integer</code> type.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable::log2</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3ae2716e04bebbb74be08845db7132e2">boost::xint::gcd</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8782636245af4772735f6e7510a7d3da">boost::xint::lcm</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Functions for blockable integers that don't fall into any other category. </p>
+<p>Greatest Common Denominator and Least Common Multple for the <code>nothrow_integer</code> type. </p>
-<p>Definition in file <a class="el" href="blockable__misc_8cpp_source.html">blockable_misc.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__gcd_8cpp_source.html">nothrow_gcd.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__gcd_8cpp_source.html (from r61200, /sandbox/xint/doc/blockable__roots_8cpp_source.html)
==============================================================================
--- /sandbox/xint/doc/blockable__roots_8cpp_source.html (original)
+++ sandbox/xint/doc/nothrow__gcd_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_roots.cpp Source File</title>
+<title>The Extended Integer (XInt) Library: nothrow_gcd.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,7 +24,7 @@
<li>File Members</li>
</ul>
</div>
-<h1>blockable_roots.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<h1>nothrow_gcd.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
@@ -41,22 +41,27 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00027"></a>00027 <span class="keywordflow">try</span> {
-<a name="l00028"></a>00028 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(core::integer(n)));
-<a name="l00029"></a>00029 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00030"></a>00030 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00032"></a>00032 }
-<a name="l00033"></a>00033 }
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 } <span class="comment">// namespace blockable</span>
-<a name="l00036"></a>00036 } <span class="comment">// namespace xint</span>
-<a name="l00037"></a>00037 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(xint::integer(num1), xint::integer(num2)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00034"></a>00034 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) {
+<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(xint::integer(num1), xint::integer(num2)));
+<a name="l00037"></a>00037 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00038"></a>00038 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 } <span class="comment">// namespace xint</span>
+<a name="l00043"></a>00043 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__integer_8cpp.html (from r61200, /sandbox/xint/doc/integer_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/integer_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__integer_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: integer.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_integer.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,31 +26,26 @@
</div>
</div>
<div class="contents">
-<h1>integer.cpp File Reference</h1>
-<p>Contains the definitions for the xint::integer member functions.
+<h1>nothrow_integer.cpp File Reference</h1>
+<p>Contains the definitions for the <code>nothrow_integer</code> member functions.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the xint::integer member functions. </p>
+<p>Contains the definitions for the <code>nothrow_integer</code> member functions. </p>
-<p>Definition in file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__integer_8cpp_source.html">nothrow_integer.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/nothrow__integer_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__integer_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,204 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_integer.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_integer.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <memory></span> <span class="comment">// for auto_ptr</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">const</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>(<span class="stringliteral">"#NaN#"</span>);
+<a name="l00025"></a>00025
+<a name="l00027"></a>00027 <span class="comment">// The nothrow_integer class</span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>{
+<a name="l00030"></a>00030 std::auto_ptr<nothrow_integer> cZero, cOne, cNaN;
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00034"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">00034</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>() {
+<a name="l00035"></a>00035 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a4f2678c34cdf09e8df0c38ea91347fd7">_attach_0</a>();
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00039"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a9c9e622a764a004d256c18b7929081">00039</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) {
+<a name="l00040"></a>00040 <span class="keywordflow">try</span> {
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (!b.<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(b);
+<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00043"></a>00043 <span class="comment">// Do nothing, automatically sets to Not-a-Number</span>
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00057"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a195e4062a0f980e1bc9df47f8645854a">00057</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b) {
+<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(b);
+<a name="l00060"></a>00060 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00061"></a>00061 <span class="comment">// Do nothing, automatically sets to Not-a-Number</span>
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064
+<a name="l00066"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a70c7b596f17102c6e292b8994dda76cc">00066</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00067"></a>00067 <span class="keywordflow">try</span> {
+<a name="l00068"></a>00068 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(str, base));
+<a name="l00069"></a>00069 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00070"></a>00070 <span class="comment">// Do nothing, automatically sets to Not-a-Number</span>
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00078"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">00078</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">nothrow_integer::odd</a>()<span class="keyword"> const </span>{
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(0) & 0x01)==1);
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082
+<a name="l00087"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">00087</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">nothrow_integer::even</a>()<span class="keyword"> const </span>{
+<a name="l00088"></a>00088 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00089"></a>00089 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#aad96a1fe27c2b1da6fe933acc444d98f">_get_digit</a>(0) & 0x01)==0);
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00096"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">00096</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">nothrow_integer::sign</a>(<span class="keywordtype">bool</span> signed_zero)<span class="keyword"> const </span>{
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> 0;
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> (!signed_zero && <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a576bd802f9b2cb8450250839bc52b98c">_is_zero</a>()) <span class="keywordflow">return</span> 0;
+<a name="l00099"></a>00099 <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a2a6ba9a67a9167e9535d735dacbaace7">_get_negative</a>() ? -1 : 1);
+<a name="l00100"></a>00100 }
+<a name="l00101"></a>00101
+<a name="l00106"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">00106</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">nothrow_integer::hex_digits</a>()<span class="keyword"> const </span>{
+<a name="l00107"></a>00107 <span class="keywordflow">try</span> {
+<a name="l00108"></a>00108 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">xint::nothrow_integer</a>(*this).hex_digits();
+<a name="l00109"></a>00109 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> 0;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113
+<a name="l00120"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d">00120</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">nothrow_integer::is_nan</a>()<span class="keyword"> const </span>{
+<a name="l00121"></a>00121 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#afdaa612dd6669a12d349d6268f1ea3ff">_is_nan</a>();
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123
+<a name="l00124"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">00124</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">nothrow_integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& addend) {
+<a name="l00125"></a>00125 <span class="keywordflow">try</span> {
+<a name="l00126"></a>00126 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator+=(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(addend)));
+<a name="l00127"></a>00127 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00128"></a>00128 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">00133</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">nothrow_integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& subtrahend) {
+<a name="l00134"></a>00134 <span class="keywordflow">try</span> {
+<a name="l00135"></a>00135 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator-=(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(subtrahend)));
+<a name="l00136"></a>00136 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00137"></a>00137 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141
+<a name="l00142"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">00142</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">nothrow_integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> &c) {
+<a name="l00143"></a>00143 <span class="keywordflow">try</span> {
+<a name="l00144"></a>00144 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(c);
+<a name="l00145"></a>00145 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00146"></a>00146 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">00151</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">nothrow_integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00152"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">00152</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">nothrow_integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00153"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">00153</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">nothrow_integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00154"></a>00154
+<a name="l00155"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">00155</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">nothrow_integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00156"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">00156</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">nothrow_integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00157"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#adf0e88fe1177733ae70496aa1a53a14d">00157</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">nothrow_integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00158"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#added2905dcd5b61db7fc6672831fc4eb">00158</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">nothrow_integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00159"></a>00159
+<a name="l00160"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">00160</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">nothrow_integer::operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00161"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">00161</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">nothrow_integer::operator>></a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00162"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">00162</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">nothrow_integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00163"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">00163</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">nothrow_integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00164"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">00164</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">nothrow_integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00165"></a>00165
+<a name="l00166"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">00166</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">nothrow_integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00167"></a>00167 <span class="keywordflow">try</span> {
+<a name="l00168"></a>00168 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator<<=(shift));
+<a name="l00169"></a>00169 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00170"></a>00170 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174
+<a name="l00175"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">00175</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">nothrow_integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00176"></a>00176 <span class="keywordflow">try</span> {
+<a name="l00177"></a>00177 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(*this).operator>>=(shift));
+<a name="l00178"></a>00178 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00179"></a>00179 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00180"></a>00180 }
+<a name="l00181"></a>00181 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183
+<a name="l00184"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">00184</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">nothrow_integer::zero</a>() {
+<a name="l00185"></a>00185 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">xint::nothrow_integer::zero</a>()));
+<a name="l00186"></a>00186 <span class="keywordflow">return</span> *cZero;
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188
+<a name="l00189"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">00189</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">nothrow_integer::one</a>() {
+<a name="l00190"></a>00190 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">xint::nothrow_integer::one</a>()));
+<a name="l00191"></a>00191 <span class="keywordflow">return</span> *cOne;
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193
+<a name="l00194"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">00194</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>() {
+<a name="l00195"></a>00195 <span class="keywordflow">if</span> (cNaN.get()==0) {
+<a name="l00196"></a>00196 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> *n=<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>();
+<a name="l00197"></a>00197 n-><a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0);
+<a name="l00198"></a>00198 cNaN.reset(n);
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200 <span class="keywordflow">return</span> *cNaN;
+<a name="l00201"></a>00201 }
+<a name="l00202"></a>00202
+<a name="l00203"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">00203</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">nothrow_integer::_make_unique</a>() {
+<a name="l00204"></a>00204 <span class="keywordflow">try</span> {
+<a name="l00205"></a>00205 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#abdfe224ab8dae4dbd4cfdd16e6c0612f">_base_make_unique</a>();
+<a name="l00206"></a>00206 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00207"></a>00207 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0); <span class="comment">// Turns it into a Not-a-Number.</span>
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 } <span class="comment">// namespace xint</span>
+<a name="l00212"></a>00212 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/nothrow__integer_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__integer_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_integer.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>nothrow_integer.hpp File Reference</h1>
+<p>Declares the <code>xint::nothrow_integer</code> class.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer.html">boost::xint::nothrow_integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The nothrow_integer class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits< boost::xint::nothrow_integer ></a></td></tr>
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">boost::xint::abs</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">boost::xint::negate</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">boost::xint::add</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">boost::xint::subtract</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">boost::xint::multiply</a> (const nothrow_integer &n, const nothrow_integer &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">boost::xint::divide</a> (const nothrow_integer &dividend, const nothrow_integer &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< nothrow_integer, <br class="typebreak"/>
+nothrow_integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">boost::xint::divide_r</a> (const nothrow_integer &d1, const nothrow_integer &d2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">boost::xint::sqr</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">boost::xint::pow</a> (const nothrow_integer &n, const nothrow_integer &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">boost::xint::nothrow_pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">boost::xint::nothrow_factorial</a> (size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">boost::xint::sqrt</a> (const nothrow_integer &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad8a1d63acfebbbdfce1047c966682a93">boost::xint::to</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a41f8922f3a2328a3c8f0d50264643ca7">boost::xint::to_string</a> (const nothrow_integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">boost::xint::nothrow_from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0602566ae765c905b4ff84275334a112">boost::xint::to_binary</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">boost::xint::nothrow_from_binary</a> (const std::string &str)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a125277404ae139bee70547f2d51d3e0e">boost::xint::getbit</a> (const nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac76235b31dcadded8193443b78743948">boost::xint::setbit</a> (nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6b82b4f0911b258e82b9c11b4413c8bf">boost::xint::clearbit</a> (nothrow_integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a09477129544d4bdb08ddd63644683f5c">boost::xint::lowestbit</a> (const nothrow_integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab817edabf5a6709c753dc6c07186ea75">boost::xint::highestbit</a> (const nothrow_integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abd4c2a471ad1e603ce5ef032071dd2ef">boost::xint::bitwise_and</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1221efa42739f309024e1715adc58917">boost::xint::bitwise_or</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab4996f013ac222b53bea0b46ff95e1df">boost::xint::bitwise_xor</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad62ca08dc3d7600eee872dc5a95c338c">boost::xint::shift</a> (const nothrow_integer &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4bc41e443d230352f7c099e60f4056f4">boost::xint::shift_left</a> (const nothrow_integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a295196e5fa8931578d27468cb5154f07">boost::xint::shift_right</a> (const nothrow_integer &n, size_t byBits)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">boost::xint::mod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3deaa6f8a44d454129bb06691a6035c7">boost::xint::mulmod</a> (const nothrow_integer &n, const nothrow_integer &by, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae64aa02c6217ea9f53f25d4f44ddddd1">boost::xint::sqrmod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa0d4bbcf5391accad798da207180894e">boost::xint::powmod</a> (const nothrow_integer &n, const nothrow_integer &e, const nothrow_integer &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a02c28345b397cb1508bad8d2bd36ca53">boost::xint::invmod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">boost::xint::nothrow_random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">boost::xint::is_prime</a> (const nothrow_integer &n, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">boost::xint::nothrow_random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad1ffadda01cf8e0b230178a9325d96dc">boost::xint::operator!</a> (const nothrow_integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aab98cd20fa3761900de197363bac0fcb">boost::xint::operator<</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a002b54ae65c6c265d773e7b491bd90fb">boost::xint::operator></a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8a72cb95a5e25a310215eaa2cc93349f">boost::xint::operator<=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2e213ecd798c6bc331460dff13b35173">boost::xint::operator>=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#accccaec2c2a8ccfadfc559adbb7ff6ed">boost::xint::operator==</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a43189615a1bfb4904c969efe846cefc6">boost::xint::operator!=</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const nothrow_integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">boost::xint::operator+</a> (const nothrow_integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">boost::xint::operator-</a> (const nothrow_integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a69d186688f404f1608663142da86158c">boost::xint::operator+</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad51e8e59ad1ff61dcdd462bf9d8acf08">boost::xint::operator-</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">boost::xint::operator*</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">boost::xint::operator/</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">boost::xint::operator%</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">boost::xint::operator&</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">boost::xint::operator|</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">boost::xint::operator^</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2745c08384519957ceaf26c3e421d485">boost::xint::compare</a> (const nothrow_integer &b1, const nothrow_integer &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">boost::xint::log2</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3ae2716e04bebbb74be08845db7132e2">boost::xint::gcd</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8782636245af4772735f6e7510a7d3da">boost::xint::lcm</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
+</div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4b7b76c7fb4b03cf086773a55604d6a2">boost::xint::operator<<</a> (std::basic_ostream< charT, traits > &out, const nothrow_integer &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a01075dbe629f0b3bd58d4d18fce80637">boost::xint::operator>></a> (std::basic_istream< charT, traits > &in, nothrow_integer &n)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Declares the <code>xint::nothrow_integer</code> class. </p>
+
+<p>Definition in file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/nothrow__integer_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__integer_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_integer.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_integer.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="integer_8hpp.html" title="Declares the core integer type.">integer.hpp</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <boost/type_traits.hpp></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>boost {
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>xint {
+<a name="l00027"></a>00027
+<a name="l00040"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html">00040</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>: <span class="keyword">public</span> detail::<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a> {
+<a name="l00041"></a>00041 <span class="keyword">public</span>:
+<a name="l00042"></a>00042
+<a name="l00045"></a>00045 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>();
+<a name="l00046"></a>00046 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b);
+<a name="l00047"></a>00047 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00048"></a>00048 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00049"></a>00049 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00050"></a>00050 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00051"></a>00051 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
+<a name="l00052"></a>00052 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00053"></a>00053 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00054"></a>00054 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+<a name="l00056"></a>00056
+<a name="l00066"></a>00066 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a8d0c877ae53afb89d00c021f10dce67a">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> &c);
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a80ef0930d8b99b324d01bb27efe709f9">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b);
+<a name="l00069"></a>00069 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aee5d502fc0045ceaf4abee175c6d4f69">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b);
+<a name="l00070"></a>00070 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a13e53eb7d7eaff28e52675aed5ee42f1">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b);
+<a name="l00071"></a>00071 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a04f5934d995a7ca8d0c6bf0d0b2cfdda">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b);
+<a name="l00072"></a>00072 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0193f6d340643c9d33517bc053f3d6c7">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& b);
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">operator++</a>();
+<a name="l00075"></a>00075 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">operator--</a>();
+<a name="l00076"></a>00076 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab202967205b2a52063c2ac19647239bc">operator++</a>(<span class="keywordtype">int</span>);
+<a name="l00077"></a>00077 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a19758953082fe86fdc13e4bef45fc6b6">operator--</a>(<span class="keywordtype">int</span>);
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6d644e1792f821acd8d4b9dfe9aa557e">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00080"></a>00080 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a0d005b0e98ea4a078d6c471217c07a24">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00081"></a>00081 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aab4b0f9c0ffeb93f68185a6ae4a98986">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00082"></a>00082 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a616a917ad4877d96ed634dd502efecb8">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) <span class="keyword">const</span>;
+<a name="l00083"></a>00083 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a6eb932be75bcc68ca4fca3845c811f87">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
+<a name="l00084"></a>00084 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeddbf6a9232a10643c8bfb53576393ee">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00085"></a>00085 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#aeb282d877481f9b21e1a9d1d1e6a1044">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00087"></a>00087
+<a name="l00090"></a>00090 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a39c446f247f63fbad9c4a205a1fbcc74">odd</a>() <span class="keyword">const</span>;
+<a name="l00091"></a>00091 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a405c535527d1ff631c7338a6d329c51d">even</a>() <span class="keyword">const</span>;
+<a name="l00092"></a>00092 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">sign</a>(<span class="keywordtype">bool</span> signed_zero=<span class="keyword">false</span>) <span class="keyword">const</span>;
+<a name="l00093"></a>00093 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>() <span class="keyword">const</span>;
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a06f1a0177446777e4e84dc0fc91d65b2">hex_digits</a>() <span class="keyword">const</span>;
+<a name="l00097"></a>00097
+<a name="l00105"></a>00105 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a2b3241400b0691fa5bd612358b48ccdd">zero</a>();
+<a name="l00106"></a>00106 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1487576980f14a9011d76dab4d7bcb50">one</a>();
+<a name="l00107"></a>00107 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nan</a>();
+<a name="l00109"></a>00109
+<a name="l00115"></a>00115 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a3351e2aacd5477008fd96bdf0c72d0b8">_make_unique</a>();
+<a name="l00117"></a>00117 };
+<a name="l00118"></a>00118
+<a name="l00121"></a>00121 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00122"></a>00122 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00123"></a>00123 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& addend);
+<a name="l00124"></a>00124 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00125"></a>00125 subtrahend);
+<a name="l00126"></a>00126 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00127"></a>00127 multiplicand);
+<a name="l00128"></a>00128 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00129"></a>00129 divisor);
+<a name="l00130"></a>00130 std::pair<nothrow_integer, nothrow_integer> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00131"></a>00131 dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& divisor);
+<a name="l00133"></a>00133
+<a name="l00135"></a>00135
+<a name="l00138"></a>00138 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00139"></a>00139 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& exponent);
+<a name="l00140"></a>00140 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">nothrow_pow2</a>(<span class="keywordtype">size_t</span> exponent);
+<a name="l00141"></a>00141 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">nothrow_factorial</a>(<span class="keywordtype">size_t</span> n);
+<a name="l00142"></a>00142 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00144"></a>00144
+<a name="l00146"></a>00146
+<a name="l00149"></a>00149 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00150"></a>00150 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase =
+<a name="l00151"></a>00151 <span class="keyword">false</span>);
+<a name="l00152"></a>00152 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ae40f9a912e985490d7291d56e597a464">nothrow_from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00153"></a>00153 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00154"></a>00154 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab6045aa842481c5175a2d2afbe018ff1">nothrow_from_binary</a>(<span class="keyword">const</span> std::string& s);
+<a name="l00156"></a>00156
+<a name="l00158"></a>00158
+<a name="l00161"></a>00161 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00162"></a>00162 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00163"></a>00163 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00164"></a>00164 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00165"></a>00165 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00166"></a>00166 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00167"></a>00167 n2);
+<a name="l00168"></a>00168 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a> (<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00169"></a>00169 n2);
+<a name="l00170"></a>00170 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00171"></a>00171 n2);
+<a name="l00172"></a>00172 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">int</span> byBits);
+<a name="l00173"></a>00173 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00174"></a>00174 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00176"></a>00176
+<a name="l00178"></a>00178
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& modBy);
+<a name="l00186"></a>00186 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& by,
+<a name="l00187"></a>00187 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& modulus);
+<a name="l00188"></a>00188 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00189"></a>00189 modulus);
+<a name="l00190"></a>00190 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00191"></a>00191 exponent, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
+<a name="l00192"></a>00192 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>&
+<a name="l00193"></a>00193 modulus);
+<a name="l00195"></a>00195
+<a name="l00197"></a>00197
+<a name="l00200"></a>00200 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">nothrow_random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>,
+<a name="l00201"></a>00201 <span class="keywordtype">bool</span> lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
+<a name="l00203"></a>00203
+<a name="l00205"></a>00205
+<a name="l00208"></a>00208 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00209"></a>00209 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">nothrow_random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback =
+<a name="l00210"></a>00210 <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00212"></a>00212
+<a name="l00214"></a>00214
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1);
+<a name="l00221"></a>00221 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00222"></a>00222 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00223"></a>00223 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00224"></a>00224 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00225"></a>00225 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00226"></a>00226 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& a);
+<a name="l00229"></a>00229 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& a);
+<a name="l00230"></a>00230 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00231"></a>00231 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00232"></a>00232 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">operator*</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00233"></a>00233 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">operator/</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00234"></a>00234 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">operator%</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00235"></a>00235 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">operator&</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00236"></a>00236 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">operator|</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00237"></a>00237 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">operator^</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n2);
+<a name="l00239"></a>00239
+<a name="l00241"></a>00241
+<a name="l00244"></a>00244 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> &n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> &n2, <span class="keywordtype">bool</span>
+<a name="l00245"></a>00245 ignoresign=<span class="keyword">false</span>);
+<a name="l00246"></a>00246 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n);
+<a name="l00247"></a>00247 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& num2);
+<a name="l00248"></a>00248 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a> <a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& num2);
+<a name="l00250"></a>00250
+<a name="l00252"></a>00252 <span class="comment">// Template function definitions</span>
+<a name="l00253"></a>00253
+<a name="l00266"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#ab0e2e8c778ad3128a228418c46add112">00266</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00267"></a>00267 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00268"></a>00268 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270 <span class="keywordflow">try</span> {
+<a name="l00271"></a>00271 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(n));
+<a name="l00272"></a>00272 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00273"></a>00273 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0);
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276
+<a name="l00289"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a7f7d4d7c031c82eec324c3dafe74c9ad">00289</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer::nothrow_integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00290"></a>00290 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00291"></a>00291 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
+<a name="l00292"></a>00292 {
+<a name="l00293"></a>00293 <span class="keywordflow">try</span> {
+<a name="l00294"></a>00294 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#add8423c7b0d729fe93a8aabf49d333ae">nothrow_integer</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(n));
+<a name="l00295"></a>00295 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00296"></a>00296 <a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a0ff9a2dc0d72f2c16caf68c6277cdab9">_attach</a>(0);
+<a name="l00297"></a>00297 }
+<a name="l00298"></a>00298 }
+<a name="l00299"></a>00299
+<a name="l00304"></a>00304 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00305"></a><a class="code" href="namespaceboost_1_1xint.html#ad8a1d63acfebbbdfce1047c966682a93">00305</a> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n) {
+<a name="l00306"></a>00306 <span class="keywordflow">try</span> {
+<a name="l00307"></a>00307 <span class="keywordflow">return</span> to<T>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(n));
+<a name="l00308"></a>00308 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00309"></a>00309 <span class="keywordflow">return</span> 0;
+<a name="l00310"></a>00310 }
+<a name="l00311"></a>00311 }
+<a name="l00312"></a>00312
+<a name="l00315"></a>00315 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00316"></a><a class="code" href="namespaceboost_1_1xint.html#a4b7b76c7fb4b03cf086773a55604d6a2">00316</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">operator<<</a>(std::basic_ostream<charT,
+<a name="l00317"></a>00317 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n)
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a1dd4d6157a77e2e1e13d2915661dce7d" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00320"></a>00320 out << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>;
+<a name="l00321"></a>00321 <span class="keywordflow">return</span> out;
+<a name="l00322"></a>00322 } <span class="keywordflow">else</span> {
+<a name="l00323"></a>00323 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">xint::operator<<</a>(out, <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a>(n));
+<a name="l00324"></a>00324 }
+<a name="l00325"></a>00325 }
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00328"></a><a class="code" href="namespaceboost_1_1xint.html#a01075dbe629f0b3bd58d4d18fce80637">00328</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">operator>></a>(std::basic_istream<charT,
+<a name="l00329"></a>00329 traits>& in, <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">nothrow_integer</a>& n)
+<a name="l00330"></a>00330 {
+<a name="l00331"></a>00331 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'#'</span>) {
+<a name="l00332"></a>00332 <span class="comment">// Must be either #NaN# or an error</span>
+<a name="l00333"></a>00333 <span class="keywordtype">char</span> buffer[6];
+<a name="l00334"></a>00334 std::streamsize size=in.readsome(buffer, 5);
+<a name="l00335"></a>00335 buffer[size]=0;
+<a name="l00336"></a>00336 std::string str(buffer);
+<a name="l00337"></a>00337
+<a name="l00338"></a>00338 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) n=<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00339"></a>00339 <span class="keywordflow">else</span> in.setstate(std::ios::failbit);
+<a name="l00340"></a>00340 } <span class="keywordflow">else</span> {
+<a name="l00341"></a>00341 <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">xint::nothrow_integer</a> nn;
+<a name="l00342"></a>00342 <a class="code" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">xint::operator>></a>(in, nn);
+<a name="l00343"></a>00343 <span class="keywordflow">if</span> (in) n=nn;
+<a name="l00344"></a>00344 }
+<a name="l00345"></a>00345
+<a name="l00346"></a>00346 <span class="keywordflow">return</span> in;
+<a name="l00347"></a>00347 }
+<a name="l00349"></a>00349
+<a name="l00350"></a>00350 } <span class="comment">// namespace xint</span>
+<a name="l00351"></a>00351 } <span class="comment">// namespace boost</span>
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keyword">namespace </span>std {
+<a name="l00354"></a>00354 <span class="keyword">template</span><>
+<a name="l00355"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">00355</a> <span class="keyword">class </span>numeric_limits<boost::xint::nothrow_integer> {
+<a name="l00356"></a>00356 <span class="keyword">public</span>:
+<a name="l00357"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">00357</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_specialized = <span class="keyword">true</span>;
+<a name="l00358"></a>00358
+<a name="l00359"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">00359</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">min</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00360"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">00360</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">max</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00361"></a>00361
+<a name="l00362"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">00362</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits = 0; <span class="comment">// Not applicable</span>
+<a name="l00363"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">00363</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits10 = 0; <span class="comment">// Not applicable</span>
+<a name="l00364"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">00364</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_signed = <span class="keyword">true</span>;
+<a name="l00365"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">00365</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_integer = <span class="keyword">true</span>;
+<a name="l00366"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">00366</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_exact = <span class="keyword">true</span>;
+<a name="l00367"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">00367</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> radix = 2;
+<a name="l00368"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">00368</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">epsilon</a>() throw() { <span class="keywordflow">return</span> 0; }
+<a name="l00369"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">00369</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">round_error</a>() throw() { <span class="keywordflow">return</span> 0; }
+<a name="l00370"></a>00370
+<a name="l00371"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae0fa48cc50faee763bb27126f48fd16c">00371</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent = 0; <span class="comment">// Not applicable</span>
+<a name="l00372"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">00372</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent10 = 0; <span class="comment">// Not applicable</span>
+<a name="l00373"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">00373</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent = 0; <span class="comment">// Not applicable</span>
+<a name="l00374"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">00374</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent10 = 0; <span class="comment">// Not applicable</span>
+<a name="l00375"></a>00375
+<a name="l00376"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">00376</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_infinity = <span class="keyword">false</span>;
+<a name="l00377"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">00377</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_quiet_NaN = <span class="keyword">true</span>;
+<a name="l00378"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">00378</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_signaling_NaN = <span class="keyword">false</span>;
+<a name="l00379"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">00379</a> <span class="keyword">static</span> <span class="keyword">const</span> float_denorm_style has_denorm = denorm_absent; <span class="comment">// Not applicable</span>
+<a name="l00380"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">00380</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_denorm_loss = <span class="keyword">false</span>; <span class="comment">// Not applicable</span>
+<a name="l00381"></a>00381
+<a name="l00382"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">00382</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">infinity</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00383"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">00383</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> quiet_NaN() throw()
+<a name="l00384"></a>00384 { <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">boost::xint::nothrow_integer::nan</a>(); }
+<a name="l00385"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">00385</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">signaling_NaN</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00386"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">00386</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html" title="The nothrow_integer class.">boost::xint::nothrow_integer</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">denorm_min</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// Not applicable</span>
+<a name="l00387"></a>00387
+<a name="l00388"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">00388</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_iec559 = <span class="keyword">false</span>;
+<a name="l00389"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">00389</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_bounded = <span class="keyword">false</span>;
+<a name="l00390"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">00390</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_modulo = <span class="keyword">false</span>;
+<a name="l00391"></a>00391
+<a name="l00392"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">00392</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> traps = <span class="keyword">false</span>; <span class="comment">// I assume this means exceptions?</span>
+<a name="l00393"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">00393</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> tinyness_before = <span class="keyword">false</span>; <span class="comment">// Not applicable</span>
+<a name="l00394"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6e305ad6c75f38d0d0ba4aa15865845d">00394</a> <span class="keyword">static</span> <span class="keyword">const</span> float_round_style round_style = round_indeterminate; <span class="comment">// Not applicable</span>
+<a name="l00395"></a>00395 };
+<a name="l00396"></a>00396 } <span class="comment">// namespace std</span>
+<a name="l00397"></a>00397
+<a name="l00398"></a>00398 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/nothrow__misc_8cpp.html (from r61200, /sandbox/xint/doc/blockable__misc_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__misc_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__misc_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_misc.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_misc.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,36 +26,31 @@
</div>
</div>
<div class="contents">
-<h1>blockable_misc.cpp File Reference</h1>
-<p>Functions for blockable integers that don't fall into any other category.
+<h1>nothrow_misc.cpp File Reference</h1>
+<p>Functions for the <code>nothrow_integer</code> type that don't fall into any other category.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable::log2</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a206fbae1c02ec96cb274aae1ad611da7">boost::xint::log2</a> (const nothrow_integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Functions for blockable integers that don't fall into any other category. </p>
+<p>Functions for the <code>nothrow_integer</code> type that don't fall into any other category. </p>
-<p>Definition in file <a class="el" href="blockable__misc_8cpp_source.html">blockable_misc.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__misc_8cpp_source.html">nothrow_misc.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__misc_8cpp_source.html (from r61200, /sandbox/xint/doc/blockable__roots_8cpp_source.html)
==============================================================================
--- /sandbox/xint/doc/blockable__roots_8cpp_source.html (original)
+++ sandbox/xint/doc/nothrow__misc_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_roots.cpp Source File</title>
+<title>The Extended Integer (XInt) Library: nothrow_misc.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,7 +24,7 @@
<li>File Members</li>
</ul>
</div>
-<h1>blockable_roots.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<h1>nothrow_misc.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
@@ -41,22 +41,19 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00027"></a>00027 <span class="keywordflow">try</span> {
-<a name="l00028"></a>00028 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(core::integer(n)));
-<a name="l00029"></a>00029 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00030"></a>00030 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l00032"></a>00032 }
-<a name="l00033"></a>00033 }
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 } <span class="comment">// namespace blockable</span>
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(xint::integer(n));
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">return</span> 0;
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
<a name="l00036"></a>00036 } <span class="comment">// namespace xint</span>
<a name="l00037"></a>00037 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__modular_8cpp.html (from r61200, /sandbox/xint/doc/blockable__modular_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__modular_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__modular_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_modular.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_modular.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,40 +26,35 @@
</div>
</div>
<div class="contents">
-<h1>blockable_modular.cpp File Reference</h1>
-<p>Contains the definitions for the basic modular math functions for blockable integers.
+<h1>nothrow_modular.cpp File Reference</h1>
+<p>Contains the definitions for the basic modular math functions for the <code>nothrow_integer</code> type.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable::mod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable::sqrmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af91fe435810928b98d6e2b36ea4c3b53">boost::xint::mod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3deaa6f8a44d454129bb06691a6035c7">boost::xint::mulmod</a> (const nothrow_integer &n, const nothrow_integer &by, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae64aa02c6217ea9f53f25d4f44ddddd1">boost::xint::sqrmod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa0d4bbcf5391accad798da207180894e">boost::xint::powmod</a> (const nothrow_integer &n, const nothrow_integer &e, const nothrow_integer &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a02c28345b397cb1508bad8d2bd36ca53">boost::xint::invmod</a> (const nothrow_integer &n, const nothrow_integer &m)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the basic modular math functions for blockable integers. </p>
-<p>The xint::invmod function, which logically would be here, is actually in <a class="el" href="gcd_8cpp.html" title="Greatest Common Denominator and Least Common Multple.">gcd.cpp</a> to share the gcd_core function. </p>
+<p>Contains the definitions for the basic modular math functions for the <code>nothrow_integer</code> type. </p>
-<p>Definition in file <a class="el" href="blockable__modular_8cpp_source.html">blockable_modular.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__modular_8cpp_source.html">nothrow_modular.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/nothrow__modular_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__modular_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_modular.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_modular.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(xint::integer(n), xint::integer(m)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00034"></a>00034 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& by, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(xint::integer(n) * xint::integer(by),
+<a name="l00037"></a>00037 xint::integer(m)));
+<a name="l00038"></a>00038 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00039"></a>00039 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042
+<a name="l00044"></a>00044 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00045"></a>00045 <span class="keywordflow">try</span> {
+<a name="l00046"></a>00046 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(xint::integer(n)), xint::integer(m)));
+<a name="l00047"></a>00047 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00048"></a>00048 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00053"></a>00053 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& e, <span class="keyword">const</span> nothrow_integer& m, <span class="keywordtype">bool</span>
+<a name="l00054"></a>00054 noMontgomery)
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 <span class="keywordflow">try</span> {
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(xint::integer(n), xint::integer(e),
+<a name="l00058"></a>00058 xint::integer(m), noMontgomery));
+<a name="l00059"></a>00059 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00068"></a>00068 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& m) {
+<a name="l00069"></a>00069 <span class="keywordflow">try</span> {
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(xint::integer(n), xint::integer(m)));
+<a name="l00071"></a>00071 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 } <span class="comment">// namespace xint</span>
+<a name="l00077"></a>00077 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/nothrow__operators_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__operators_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_operators.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>nothrow_operators.cpp File Reference</h1>
+<p>Contains the definitions for the basic math operators for the <code>nothrow_integer</code> type.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const nothrow_integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">boost::xint::operator+</a> (const nothrow_integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">boost::xint::operator-</a> (const nothrow_integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a69d186688f404f1608663142da86158c">boost::xint::operator+</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad51e8e59ad1ff61dcdd462bf9d8acf08">boost::xint::operator-</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">boost::xint::operator*</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">boost::xint::operator/</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">boost::xint::operator%</a> (const nothrow_integer &num1, const nothrow_integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">boost::xint::operator&</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">boost::xint::operator|</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">boost::xint::operator^</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the definitions for the basic math operators for the <code>nothrow_integer</code> type. </p>
+
+<p>Definition in file <a class="el" href="nothrow__operators_8cpp_source.html">nothrow_operators.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/nothrow__operators_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__operators_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_operators.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_operators.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">const</span> nothrow_integer& <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> nothrow_integer& a) { <span class="keywordflow">return</span> a; }
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> nothrow_integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(a); }
+<a name="l00026"></a>00026 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(num1, num2); }
+<a name="l00027"></a>00027 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(num1, num2); }
+<a name="l00028"></a>00028 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">operator*</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(num1, num2); }
+<a name="l00029"></a>00029 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">operator/</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(num1, num2); }
+<a name="l00030"></a>00030 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">operator%</a>(<span class="keyword">const</span> nothrow_integer& num1, <span class="keyword">const</span> nothrow_integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(num1, num2); }
+<a name="l00031"></a>00031 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">operator&</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(n1, n2); }
+<a name="l00032"></a>00032 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">operator|</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(n1, n2); }
+<a name="l00033"></a>00033 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">operator^</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(n1, n2); }
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 } <span class="comment">// namespace xint</span>
+<a name="l00036"></a>00036 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/nothrow__powers_8cpp.html (from r61200, /sandbox/xint/doc/roots_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__powers_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: roots.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_powers.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,37 +26,34 @@
</div>
</div>
<div class="contents">
-<h1>roots.cpp File Reference</h1>
-<p>Contains the definitions for functions related to roots of a number.
+<h1>nothrow_powers.cpp File Reference</h1>
+<p>Contains the definitions for <code>nothrow_integer</code> functions related to powers of a number.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">boost::xint::nothrow_pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">boost::xint::sqr</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">boost::xint::pow</a> (const nothrow_integer &n, const nothrow_integer &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">boost::xint::nothrow_factorial</a> (size_t n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for functions related to roots of a number. </p>
+<p>Contains the definitions for <code>nothrow_integer</code> functions related to powers of a number. </p>
-<p>Definition in file <a class="el" href="roots_8cpp_source.html">roots.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__powers_8cpp_source.html">nothrow_powers.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/nothrow__powers_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__powers_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_powers.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_powers.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7dd5b57bcf282d01f39cddf425418287">nothrow_pow2</a>(<span class="keywordtype">size_t</span> e) {
+<a name="l00026"></a>00026 nothrow_integer r;
+<a name="l00027"></a>00027 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(r, e);
+<a name="l00028"></a>00028 <span class="keywordflow">return</span> r;
+<a name="l00029"></a>00029 }
+<a name="l00030"></a>00030
+<a name="l00032"></a>00032 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00033"></a>00033 <span class="keywordflow">try</span> {
+<a name="l00034"></a>00034 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(xint::integer(n)));
+<a name="l00035"></a>00035 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00037"></a>00037 }
+<a name="l00038"></a>00038 }
+<a name="l00039"></a>00039
+<a name="l00041"></a>00041 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& e) {
+<a name="l00042"></a>00042 <span class="keywordflow">try</span> {
+<a name="l00043"></a>00043 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a>(xint::integer(n), xint::integer(e)));
+<a name="l00044"></a>00044 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048
+<a name="l00050"></a>00050 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a0098148e09b3c1fb2aed15dc9badc7c6">nothrow_factorial</a>(<span class="keywordtype">size_t</span> n) {
+<a name="l00051"></a>00051 <span class="keywordflow">try</span> {
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">xint::factorial</a>(n));
+<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 } <span class="comment">// namespace xint</span>
+<a name="l00059"></a>00059 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/nothrow__primes_8cpp.html (from r61200, /sandbox/xint/doc/blockable__primes_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__primes_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__primes_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_primes.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_primes.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,37 +26,32 @@
</div>
</div>
<div class="contents">
-<h1>blockable_primes.cpp File Reference</h1>
-<p>Contains the definitions for functions related to prime numbers for blockable integers.
+<h1>nothrow_primes.cpp File Reference</h1>
+<p>Contains the definitions for functions related to prime numbers for the <code>nothrow_integer</code> type.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable::is_prime</a> (const integer &n, callback_t callback)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">boost::xint::is_prime</a> (const nothrow_integer &n, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">boost::xint::nothrow_random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for functions related to prime numbers for blockable integers. </p>
+<p>Contains the definitions for functions related to prime numbers for the <code>nothrow_integer</code> type. </p>
-<p>Definition in file <a class="el" href="blockable__primes_8cpp_source.html">blockable_primes.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__primes_8cpp_source.html">nothrow_primes.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__primes_8cpp_source.html (from r61200, /sandbox/xint/doc/blockable__misc_8cpp_source.html)
==============================================================================
--- /sandbox/xint/doc/blockable__misc_8cpp_source.html (original)
+++ sandbox/xint/doc/nothrow__primes_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_misc.cpp Source File</title>
+<title>The Extended Integer (XInt) Library: nothrow_primes.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,7 +24,7 @@
<li>File Members</li>
</ul>
</div>
-<h1>blockable_misc.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<h1>nothrow_primes.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
@@ -41,22 +41,27 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00029"></a>00029 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(core::integer(n));
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 } <span class="comment">// namespace blockable</span>
-<a name="l00039"></a>00039 } <span class="comment">// namespace xint</span>
-<a name="l00040"></a>00040 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(<span class="keyword">const</span> nothrow_integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(xint::integer(n), callback);
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">return</span> -1;
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00037"></a>00037 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aed98791058e6a589b06f8015ae0acaef">nothrow_random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00038"></a>00038 <span class="keywordflow">try</span> {
+<a name="l00039"></a>00039 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">xint::random_prime</a>(size_in_bits, callback));
+<a name="l00040"></a>00040 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 } <span class="comment">// namespace xint</span>
+<a name="l00046"></a>00046 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/nothrow__primitives_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__primitives_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_primitives.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>nothrow_primitives.cpp File Reference</h1>
+<p>Contains the definitions for math primitives for the <code>nothrow_integer</code> type.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">boost::xint::abs</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">boost::xint::negate</a> (const nothrow_integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">boost::xint::add</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">boost::xint::subtract</a> (const nothrow_integer &n1, const nothrow_integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">boost::xint::multiply</a> (const nothrow_integer &n, const nothrow_integer &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">boost::xint::divide</a> (const nothrow_integer &dividend, const nothrow_integer &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< nothrow_integer, <br class="typebreak"/>
+nothrow_integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">boost::xint::divide_r</a> (const nothrow_integer &d1, const nothrow_integer &d2)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the definitions for math primitives for the <code>nothrow_integer</code> type. </p>
+
+<p>Definition in file <a class="el" href="nothrow__primitives_8cpp_source.html">nothrow_primitives.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/nothrow__primitives_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/nothrow__primitives_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: nothrow_primitives.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>nothrow_primitives.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(xint::integer(n)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00034"></a>00034 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(xint::integer(n)));
+<a name="l00037"></a>00037 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00038"></a>00038 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041
+<a name="l00043"></a>00043 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00044"></a>00044 <span class="keywordflow">try</span> {
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00046"></a>00046 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00047"></a>00047 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050
+<a name="l00052"></a>00052 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(<span class="keyword">const</span> nothrow_integer& n1, <span class="keyword">const</span> nothrow_integer& n2) {
+<a name="l00053"></a>00053 <span class="keywordflow">try</span> {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(xint::integer(n1), xint::integer(n2)));
+<a name="l00055"></a>00055 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00056"></a>00056 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059
+<a name="l00061"></a>00061 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(<span class="keyword">const</span> nothrow_integer& n, <span class="keyword">const</span> nothrow_integer& by) {
+<a name="l00062"></a>00062 <span class="keywordflow">try</span> {
+<a name="l00063"></a>00063 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(xint::integer(n), xint::integer(by)));
+<a name="l00064"></a>00064 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068
+<a name="l00070"></a>00070 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(<span class="keyword">const</span> nothrow_integer& dividend, <span class="keyword">const</span> nothrow_integer& divisor) {
+<a name="l00071"></a>00071 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(dividend, divisor).first;
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00078"></a>00078 std::pair<nothrow_integer, nothrow_integer> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(<span class="keyword">const</span> nothrow_integer& d1, <span class="keyword">const</span> nothrow_integer& d2) {
+<a name="l00079"></a>00079 <span class="keywordflow">try</span> {
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(xint::integer(d1), xint::integer(d2));
+<a name="l00081"></a>00081 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00082"></a>00082 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>(), <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>());
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 } <span class="comment">// namespace xint</span>
+<a name="l00087"></a>00087 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/nothrow__random_8cpp.html (from r61200, /sandbox/xint/doc/blockable__random_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__random_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__random_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_random.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_random.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,36 +26,31 @@
</div>
</div>
<div class="contents">
-<h1>blockable_random.cpp File Reference</h1>
-<p>Contains the definitions for the random number functions for blockable integers.
+<h1>nothrow_random.cpp File Reference</h1>
+<p>Contains the definitions for the random number functions for the <code>nothrow_integer</code> type.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">boost::xint::nothrow_random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the random number functions for blockable integers. </p>
+<p>Contains the definitions for the random number functions for the <code>nothrow_integer</code> type. </p>
-<p>Definition in file <a class="el" href="blockable__random_8cpp_source.html">blockable_random.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__random_8cpp_source.html">nothrow_random.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__random_8cpp_source.html (from r61200, /sandbox/xint/doc/blockable__misc_8cpp_source.html)
==============================================================================
--- /sandbox/xint/doc/blockable__misc_8cpp_source.html (original)
+++ sandbox/xint/doc/nothrow__random_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_misc.cpp Source File</title>
+<title>The Extended Integer (XInt) Library: nothrow_random.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,7 +24,7 @@
<li>File Members</li>
</ul>
</div>
-<h1>blockable_misc.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<h1>nothrow_random.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
@@ -41,22 +41,22 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00029"></a>00029 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(core::integer(n));
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 } <span class="comment">// namespace blockable</span>
-<a name="l00039"></a>00039 } <span class="comment">// namespace xint</span>
-<a name="l00040"></a>00040 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a1b55b4b192aa6abc491e3ed8c5ef2627">nothrow_random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span>
+<a name="l00026"></a>00026 low_bit_on, <span class="keywordtype">bool</span> can_be_negative)
+<a name="l00027"></a>00027 {
+<a name="l00028"></a>00028 <span class="keywordflow">try</span> {
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">xint::random_by_size</a>(bits, high_bit_on,
+<a name="l00030"></a>00030 low_bit_on, can_be_negative));
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 } <span class="comment">// namespace xint</span>
+<a name="l00037"></a>00037 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__roots_8cpp.html (from r61200, /sandbox/xint/doc/blockable__roots_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/blockable__roots_8cpp.html (original)
+++ sandbox/xint/doc/nothrow__roots_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_roots.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: nothrow_roots.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,36 +26,31 @@
</div>
</div>
<div class="contents">
-<h1>blockable_roots.cpp File Reference</h1>
-<p>Contains the definitions for blockable integer functions related to roots of a number.
+<h1>nothrow_roots.cpp File Reference</h1>
+<p>Contains the definitions for <code>nothrow_integer</code> functions related to roots of a number.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable::sqrt</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">nothrow_integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">boost::xint::sqrt</a> (const nothrow_integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for blockable integer functions related to roots of a number. </p>
+<p>Contains the definitions for <code>nothrow_integer</code> functions related to roots of a number. </p>
-<p>Definition in file <a class="el" href="blockable__roots_8cpp_source.html">blockable_roots.cpp</a>.</p>
+<p>Definition in file <a class="el" href="nothrow__roots_8cpp_source.html">nothrow_roots.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/nothrow__roots_8cpp_source.html (from r61200, /sandbox/xint/doc/blockable__misc_8cpp_source.html)
==============================================================================
--- /sandbox/xint/doc/blockable__misc_8cpp_source.html (original)
+++ sandbox/xint/doc/nothrow__roots_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: blockable_misc.cpp Source File</title>
+<title>The Extended Integer (XInt) Library: nothrow_roots.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,7 +24,7 @@
<li>File Members</li>
</ul>
</div>
-<h1>blockable_misc.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<h1>nothrow_roots.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
@@ -41,22 +41,19 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
-<a name="l00024"></a>00024
-<a name="l00029"></a>00029 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(core::integer(n));
-<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 } <span class="comment">// namespace blockable</span>
-<a name="l00039"></a>00039 } <span class="comment">// namespace xint</span>
-<a name="l00040"></a>00040 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 nothrow_integer <a class="code" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a>(<span class="keyword">const</span> nothrow_integer& n) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> nothrow_integer(<a class="code" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a>(xint::integer(n)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a9a8d654139e4fb916f933d09c7238e10">nothrow_integer::nan</a>();
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 } <span class="comment">// namespace xint</span>
+<a name="l00034"></a>00034 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/operators_8cpp.html
==============================================================================
--- sandbox/xint/doc/operators_8cpp.html (original)
+++ sandbox/xint/doc/operators_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,35 +36,30 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core::operator+</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core::operator-</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a017539f78cba665d5cbb6b6ba00e1d42">boost::xint::core::operator+</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af4587327ba62268fe3267ca09bd8f4a2">boost::xint::core::operator-</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core::operator*</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core::operator/</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core::operator%</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core::operator&</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core::operator|</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint::operator+</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint::operator-</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f6171689ef68ff6672e43a1e24ea494">boost::xint::operator+</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac16aa971521ae015a62ec015f1fe56d0">boost::xint::operator-</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint::operator*</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint::operator/</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint::operator%</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint::operator&</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint::operator|</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint::operator^</a> (const integer &n1, const integer &n2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for the basic math operators. </p>
<p>Definition in file <a class="el" href="operators_8cpp_source.html">operators.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/operators_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/operators_8cpp_source.html (original)
+++ sandbox/xint/doc/operators_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,22 +41,20 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>core {
-<a name="l00023"></a>00023 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
-<a name="l00024"></a>00024 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>(a); }
-<a name="l00025"></a>00025 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(num1, num2); }
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(num1, num2); }
-<a name="l00027"></a>00027 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(num1, num2); }
-<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(num1, num2); }
-<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(num1, num2); }
-<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(n1, n2); }
-<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(n1, n2); }
-<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(n1, n2); }
-<a name="l00033"></a>00033 } <span class="comment">// namespace core</span>
-<a name="l00034"></a>00034 } <span class="comment">// namespace xint</span>
-<a name="l00035"></a>00035 } <span class="comment">// namespace boost</span>
+<a name="l00022"></a>00022 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
+<a name="l00023"></a>00023 integer <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(a); }
+<a name="l00024"></a>00024 integer <a class="code" href="namespaceboost_1_1xint.html#a7445ea22d360a39fd330f9c53ca550f3">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(num1, num2); }
+<a name="l00025"></a>00025 integer <a class="code" href="namespaceboost_1_1xint.html#afbf48bed2400e2eec3fd9544420357f3">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(num1, num2); }
+<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint.html#aadeb3206628bdfd3112db2d80fff7c92">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(num1, num2); }
+<a name="l00027"></a>00027 integer <a class="code" href="namespaceboost_1_1xint.html#a83d07bf51fce0b4644b2190278c30413">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(num1, num2); }
+<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint.html#a2261cdd3b6c689b76cc379ac515e5d45">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(num1, num2); }
+<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint.html#a97db617d1b8d73ca35c8ef41ec7e9a31">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(n1, n2); }
+<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint.html#ae1b86fdde7f84fbcbe39cec5ecc0bc8c">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(n1, n2); }
+<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint.html#a2b27999f391ede4a2ec60ee83e6e5060">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(n1, n2); }
+<a name="l00032"></a>00032 } <span class="comment">// namespace xint</span>
+<a name="l00033"></a>00033 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/pages.html
==============================================================================
--- sandbox/xint/doc/pages.html (original)
+++ sandbox/xint/doc/pages.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -25,7 +25,7 @@
</li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/powers_8cpp.html
==============================================================================
--- sandbox/xint/doc/powers_8cpp.html (original)
+++ sandbox/xint/doc/powers_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,33 +36,28 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core::pow2</a> (size_t e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core::pow</a> (const integer &n, const integer &e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core::factorial</a> (size_t n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint::pow2</a> (size_t e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint::sqr</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint::factorial</a> (size_t n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for functions related to powers of a number. </p>
<p>Definition in file <a class="el" href="powers_8cpp_source.html">powers.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/powers_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/powers_8cpp_source.html (original)
+++ sandbox/xint/doc/powers_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,110 +38,108 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="preprocessor">#include <vector></span>
-<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
-<a name="l00024"></a>00024 <span class="keyword">namespace </span>xint {
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">using namespace </span>detail;
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>core {
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>{
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keywordtype">bool</span> addOverflow(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> &n1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> n2) {
-<a name="l00032"></a>00032 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(n1>>1)+(n2>>1);
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> ((n1&1) && (n2&1)) ++t;
-<a name="l00034"></a>00034 n1+=n2;
-<a name="l00035"></a>00035 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00036"></a>00036 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00037"></a>00037 }
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include <vector></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">using namespace </span>detail;
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>{
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keywordtype">bool</span> addOverflow(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> &n1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> n2) {
+<a name="l00030"></a>00030 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(n1>>1)+(n2>>1);
+<a name="l00031"></a>00031 <span class="keywordflow">if</span> ((n1&1) && (n2&1)) ++t;
+<a name="l00032"></a>00032 n1+=n2;
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00034"></a>00034 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 } <span class="comment">// namespace</span>
<a name="l00038"></a>00038
-<a name="l00039"></a>00039 } <span class="comment">// namespace</span>
-<a name="l00040"></a>00040
-<a name="l00050"></a>00050 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> e) {
-<a name="l00051"></a>00051 integer r;
-<a name="l00052"></a>00052 <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(r, e);
-<a name="l00053"></a>00053 <span class="keywordflow">return</span> r;
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00066"></a>00066 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00067"></a>00067 <span class="keyword">const</span> data_t *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
-<a name="l00068"></a>00068 std::vector<doubledigit_t> a(ndata->mLength*2+1, 0);
-<a name="l00069"></a>00069 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> *adigit=&a[0];
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> i, j;
-<a name="l00072"></a>00072 integer addend;
-<a name="l00073"></a>00073 data_t *addenddata=addend._get_data();
-<a name="l00074"></a>00074 addenddata->alloc(ndata->mLength*2+1);
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ndigitip=ndata->digits;
-<a name="l00077"></a>00077 <span class="keywordflow">for</span> (i=0; i<ndata->mLength; ++i, ++ndigitip) {
-<a name="l00078"></a>00078 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ndigiti=*ndigitip;
-<a name="l00079"></a>00079 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndigiti) * ndigiti);
-<a name="l00080"></a>00080 <span class="keywordflow">if</span> (addOverflow(adigit[2*i], t)) ++addenddata->digits[2*i+2];
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 for (j=i+1; j<ndata->mLength; ++j) {
-<a name="l00083"></a>00083 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndata->digits[j]) * ndigiti);
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) ++addenddata->digits[i+j+2];
-<a name="l00085"></a>00085 t<<=1;
-<a name="l00086"></a>00086 <span class="keywordflow">if</span> (addOverflow(adigit[i+j], t)) ++addenddata->digits[i+j+2];
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 integer answer;
-<a name="l00091"></a>00091 data_t *answerdata=answer._get_data();
-<a name="l00092"></a>00092 answerdata->alloc(ndata->mLength*2+1);
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> carry=0;
-<a name="l00095"></a>00095 <span class="keywordflow">for</span> (i=0, j=ndata->mLength*2+1; i<j; ++i) {
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (addOverflow(carry, adigit[i])) ++addenddata->digits[i+2];
-<a name="l00097"></a>00097 answerdata->digits[i]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(carry);
-<a name="l00098"></a>00098 carry>>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 answerdata->skipLeadingZeros();
-<a name="l00102"></a>00102 addenddata->skipLeadingZeros();
-<a name="l00103"></a>00103 answer+=addend;
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keywordflow">return</span> answer;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00114"></a>00114 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30" title="Calculate the value of ne">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
-<a name="l00115"></a>00115 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="keywordtype">size_t</span> length=e.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>(), lastBitCount=0;
-<a name="l00118"></a>00118 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ee(e._get_digit(length-1));
-<a name="l00119"></a>00119 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n)), answer=<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
-<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
-<a name="l00123"></a>00123 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> eee(e._get_digit(eIndex));
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount : <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00126"></a>00126 <span class="keywordflow">while</span> (bitCount-- > 0) {
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (eee & 0x01) answer*=p;
-<a name="l00128"></a>00128 p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(p);
-<a name="l00129"></a>00129 eee >>= 1;
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 answer._set_negative(neg);
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> answer;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136
-<a name="l00148"></a>00148 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n) {
-<a name="l00149"></a>00149 integer r(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
-<a name="l00150"></a>00150 <span class="keywordflow">while</span> (n > 1) { r *= n--; }
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> r;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 } <span class="comment">// namespace core</span>
-<a name="l00155"></a>00155 } <span class="comment">// namespace xint</span>
-<a name="l00156"></a>00156 } <span class="comment">// namespace boost</span>
+<a name="l00048"></a>00048 integer <a class="code" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> e) {
+<a name="l00049"></a>00049 integer r;
+<a name="l00050"></a>00050 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(r, e);
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> r;
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053
+<a name="l00064"></a>00064 integer <a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00065"></a>00065 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ndigits=n._get_digits();
+<a name="l00066"></a>00066 <span class="keywordtype">size_t</span> nlen=n._get_length();
+<a name="l00067"></a>00067 std::vector<doubledigit_t> a(nlen*2+1, 0);
+<a name="l00068"></a>00068 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> *adigit=&a[0];
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keywordtype">size_t</span> i, j;
+<a name="l00071"></a>00071 integer addend;
+<a name="l00072"></a>00072 addend._realloc(nlen*2+1);
+<a name="l00073"></a>00073 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *adigits=addend._get_digits();
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ndigitip=ndigits;
+<a name="l00076"></a>00076 <span class="keywordflow">for</span> (i=0; i<nlen; ++i, ++ndigitip) {
+<a name="l00077"></a>00077 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ndigiti=*ndigitip;
+<a name="l00078"></a>00078 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndigiti) * ndigiti);
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (addOverflow(adigit[2*i], t)) ++adigits[2*i+2];
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keywordflow">for</span> (j=i+1; j<nlen; ++j) {
+<a name="l00082"></a>00082 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndigits[j]) * ndigiti);
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) ++adigits[i+j+2];
+<a name="l00084"></a>00084 t<<=1;
+<a name="l00085"></a>00085 <span class="keywordflow">if</span> (addOverflow(adigit[i+j], t)) ++adigits[i+j+2];
+<a name="l00086"></a>00086 }
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 integer answer;
+<a name="l00090"></a>00090 answer._realloc(nlen*2+1);
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> carry=0;
+<a name="l00093"></a>00093 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ansdigits=answer._get_digits();
+<a name="l00094"></a>00094 <span class="keywordflow">for</span> (i=0, j=nlen*2+1; i<j; ++i) {
+<a name="l00095"></a>00095 <span class="keywordflow">if</span> (addOverflow(carry, adigit[i])) ++adigits[i+2];
+<a name="l00096"></a>00096 ansdigits[i]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(carry);
+<a name="l00097"></a>00097 carry>>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 answer._cleanup();
+<a name="l00101"></a>00101 addend._cleanup();
+<a name="l00102"></a>00102 answer+=addend;
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="keywordflow">return</span> answer;
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106
+<a name="l00113"></a>00113 integer <a class="code" href="namespaceboost_1_1xint.html#a7f73207284ff1f32b20fb8a6a7a82649">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
+<a name="l00114"></a>00114 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keywordtype">size_t</span> length=e.<a class="code" href="classboost_1_1xint_1_1detail_1_1base__integer.html#a7462afdf5589caa01bb1ed732f633469">_get_length</a>(), lastBitCount=0;
+<a name="l00117"></a>00117 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ee(e._get_digit(length-1));
+<a name="l00118"></a>00118 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 integer p(<a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(n)), answer=<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>();
+<a name="l00121"></a>00121 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
+<a name="l00122"></a>00122 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> eee(e._get_digit(eIndex));
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount : <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00125"></a>00125 <span class="keywordflow">while</span> (bitCount-- > 0) {
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (eee & 0x01) answer*=p;
+<a name="l00127"></a>00127 p=<a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(p);
+<a name="l00128"></a>00128 eee >>= 1;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 answer._set_negative(neg);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> answer;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00147"></a>00147 integer <a class="code" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n) {
+<a name="l00148"></a>00148 integer r(<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>());
+<a name="l00149"></a>00149 <span class="keywordflow">while</span> (n > 1) { r *= n--; }
+<a name="l00150"></a>00150 <span class="keywordflow">return</span> r;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 } <span class="comment">// namespace xint</span>
+<a name="l00154"></a>00154 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/primes.html
==============================================================================
--- sandbox/xint/doc/primes.html (original)
+++ sandbox/xint/doc/primes.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,7 +28,7 @@
<p>With larger bit-sizes, the <code>is_prime</code> and <code>random_prime</code> functions can take a very long time to run, so you can pass an optional callback function to them as well. The provided callback function (which takes no parameters and returns a <code>bool</code>) will be called regularly during this time, and if it returns <code>false</code>, the function will abort and return zero (for random_prime) or -1 (for is_prime) instead of a value.</p>
<p>Here is an example of how to use the library functions to create a prime number of a specific length, using the system's strong random number generator:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include <iostream></span>
-<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></span>
+<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="This is the include-everything header.">boost/xint/xint.hpp</a>></span>
<span class="keywordtype">bool</span> callback() {
std::cout << <span class="charliteral">'.'</span> << std::flush;
@@ -36,25 +36,26 @@
}
<span class="keywordtype">int</span> main() {
- <span class="keyword">using namespace </span>std;
+ <span class="keyword">using</span> std::cout;
+ <span class="keyword">using</span> std::endl;
<span class="keyword">using namespace </span>boost;
- <span class="keyword">using namespace </span>xint::core;
+ <span class="keyword">using namespace </span>xint;
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bits=512;
<span class="keywordflow">try</span> {
<span class="comment">// Use the system's strong random number generator, via the XInt-</span>
<span class="comment">// provided convenience class.</span>
- <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">xint::set_random_generator</a>(<span class="keyword">new</span> xint::strong_random_generator);
+ <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">set_random_generator</a>(<span class="keyword">new</span> strong_random_generator);
<span class="comment">// Generate the prime number, keeping the user informed of the</span>
<span class="comment">// progress.</span>
cout << <span class="stringliteral">"Generating..."</span>;
- integer p=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a>(bits, callback);
+ integer p=<a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(bits, callback);
<span class="comment">// Success!</span>
cout << <span class="stringliteral">"\nA random "</span> << bits << <span class="stringliteral">"-bit prime is: "</span> << p << endl;
- } <span class="keywordflow">catch</span> (xint::no_strong_random& e) {
+ } <span class="keywordflow">catch</span> (exceptions::no_strong_random& e) {
<span class="comment">// xint::strong_random_generator will throw this if the system doesn't</span>
<span class="comment">// have a strong random number generator.</span>
cout << e.what() << endl;
@@ -65,7 +66,7 @@
}
</pre></div><p>(You can find it in the <code>examples</code> directory, by the name <code>genprime.cpp</code>.) </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/primes_8cpp.html
==============================================================================
--- sandbox/xint/doc/primes_8cpp.html (original)
+++ sandbox/xint/doc/primes_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,29 +36,24 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core::is_prime</a> (const integer &n, callback_t callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">boost::xint::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for functions related to prime numbers. </p>
<p>Definition in file <a class="el" href="primes_8cpp_source.html">primes.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/primes_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/primes_8cpp_source.html (original)
+++ sandbox/xint/doc/primes_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -43,107 +43,105 @@
<a name="l00021"></a>00021
<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
-<a name="l00024"></a>00024 <span class="keyword">namespace </span>core {
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>{
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 std::vector<int> sieveOfEratosthenes(<span class="keywordtype">int</span> upTo) {
-<a name="l00029"></a>00029 std::vector<int> sieve;
-<a name="l00030"></a>00030 sieve.reserve(upTo);
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="comment">// Zero and one aren't prime, by this definition.</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>{
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 std::vector<int> sieveOfEratosthenes(<span class="keywordtype">int</span> upTo) {
+<a name="l00028"></a>00028 std::vector<int> sieve;
+<a name="l00029"></a>00029 sieve.reserve(upTo);
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="comment">// Zero and one aren't prime, by this definition.</span>
+<a name="l00032"></a>00032 sieve.push_back(0);
<a name="l00033"></a>00033 sieve.push_back(0);
-<a name="l00034"></a>00034 sieve.push_back(0);
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> p=2; p<upTo; ++p) sieve.push_back(p);
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 std::vector<int> ret;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keywordtype">int</span> *p=&sieve[0], *e=p+upTo;
-<a name="l00041"></a>00041 <span class="keywordflow">while</span> (p<e) {
-<a name="l00042"></a>00042 <span class="keywordflow">if</span> (*p==0) { ++p; <span class="keywordflow">continue</span>; }
-<a name="l00043"></a>00043 ret.push_back(*p);
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="keywordtype">int</span> *p2=p+(*p);
-<a name="l00046"></a>00046 <span class="keywordflow">while</span> (p2<e) { *p2=0; p2+=*p; }
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 ++p;
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="keywordflow">return</span> ret;
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="comment">// The Miller-Rabin Probabilistic Test of Primality</span>
-<a name="l00055"></a>00055 <span class="keywordtype">int</span> isProbablePrimeBaseB(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer &b, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>
-<a name="l00056"></a>00056 callback)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="keyword">const</span> integer nMinus1(n - <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="comment">// Find r and a satisfying: n-1=2^a * r, r odd</span>
-<a name="l00061"></a>00061 integer r=nMinus1;
-<a name="l00062"></a>00062 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> a=0;
-<a name="l00063"></a>00063 <span class="keywordflow">while</span> (r.even()) { r >>= 1; ++a; }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="comment">// We check the congruence class of b^((2^i)r) % n for each i</span>
-<a name="l00066"></a>00066 <span class="comment">// from 0 to a - 1. If any one is correct, then n passes.</span>
-<a name="l00067"></a>00067 <span class="comment">// Otherwise, n fails.</span>
-<a name="l00068"></a>00068 integer test=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(b, r, n);
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (test==<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() || test==nMinus1) <span class="keywordflow">return</span> 1; <span class="comment">// Better than 3/4 chance it's prime</span>
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordflow">while</span> (a-->0) {
-<a name="l00072"></a>00072 test=<a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(test, n);
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (test==nMinus1) <span class="keywordflow">return</span> 1;
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> -1;
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> 0;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 } <span class="comment">// namespace</span>
-<a name="l00081"></a>00081
-<a name="l00102"></a>00102 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
-<a name="l00103"></a>00103 <span class="keywordflow">if</span> (n < 2) <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"xint::is_prime cannot test numbers "</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"below 2"</span>);
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="comment">// First we trial-divide it by the primes below 2000</span>
-<a name="l00107"></a>00107 <span class="keyword">static</span> <span class="keyword">const</span> std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
-<a name="l00108"></a>00108 std::vector<int>::const_iterator i=cLowPrimes.begin(), ie=cLowPrimes.end();
-<a name="l00109"></a>00109 <span class="keywordflow">for</span> (; i!=ie; ++i) <span class="keywordflow">if</span> ((n % *i)==0) <span class="keywordflow">return</span> (n==*i);
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="comment">// Run the number through the Miller-Rabin Probabilistic Test of Primality</span>
-<a name="l00112"></a>00112 <span class="comment">// a few times to see if it's actually (probably) prime.</span>
-<a name="l00113"></a>00113 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> count=0; count<5; ++count) {
-<a name="l00114"></a>00114 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">detail::get_random</a>();
-<a name="l00115"></a>00115 <span class="keywordtype">int</span> isP=isProbablePrimeBaseB(n, <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(k), callback);
-<a name="l00116"></a>00116 <span class="keywordflow">if</span> (isP <= 0) <span class="keywordflow">return</span> isP;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 <span class="keywordflow">return</span> 1; <span class="comment">// Appears to be prime!</span>
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120
-<a name="l00143"></a>00143 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
-<a name="l00144"></a>00144 <span class="keywordflow">if</span> (size_in_bits < 2) <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"cannot create prime "</span>
-<a name="l00145"></a>00145 <span class="stringliteral">"numbers smaller than two bits"</span>);
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="comment">// Call the callback for the first time</span>
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 integer pe=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(size_in_bits+1);
-<a name="l00151"></a>00151 <span class="keywordflow">while</span> (1) {
-<a name="l00152"></a>00152 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">random_by_size</a>(size_in_bits, <span class="keyword">true</span>, <span class="keyword">true</span>));
-<a name="l00153"></a>00153 <span class="keywordflow">while</span> (p < pe) {
-<a name="l00154"></a>00154 <span class="keywordtype">int</span> r=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89" title="Tests an integer for primality.">is_prime</a>(p, callback);
-<a name="l00155"></a>00155 <span class="keywordflow">if</span> (r < 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00156"></a>00156 <span class="keywordflow">if</span> (r == 1) <span class="keywordflow">return</span> p;
-<a name="l00157"></a>00157 p+=2;
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 } <span class="comment">// namespace core</span>
-<a name="l00163"></a>00163 } <span class="comment">// namespace xint</span>
-<a name="l00164"></a>00164 } <span class="comment">// namespace boost</span>
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> p=2; p<upTo; ++p) sieve.push_back(p);
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 std::vector<int> ret;
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keywordtype">int</span> *p=&sieve[0], *e=p+upTo;
+<a name="l00040"></a>00040 <span class="keywordflow">while</span> (p<e) {
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (*p==0) { ++p; <span class="keywordflow">continue</span>; }
+<a name="l00042"></a>00042 ret.push_back(*p);
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <span class="keywordtype">int</span> *p2=p+(*p);
+<a name="l00045"></a>00045 <span class="keywordflow">while</span> (p2<e) { *p2=0; p2+=*p; }
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 ++p;
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keywordflow">return</span> ret;
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="comment">// The Miller-Rabin Probabilistic Test of Primality</span>
+<a name="l00054"></a>00054 <span class="keywordtype">int</span> isProbablePrimeBaseB(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer &b, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>
+<a name="l00055"></a>00055 callback)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keyword">const</span> integer nMinus1(n - <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>());
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="comment">// Find r and a satisfying: n-1=2^a * r, r odd</span>
+<a name="l00060"></a>00060 integer r=nMinus1;
+<a name="l00061"></a>00061 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> a=0;
+<a name="l00062"></a>00062 <span class="keywordflow">while</span> (r.even()) { r >>= 1; ++a; }
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="comment">// We check the congruence class of b^((2^i)r) % n for each i</span>
+<a name="l00065"></a>00065 <span class="comment">// from 0 to a - 1. If any one is correct, then n passes.</span>
+<a name="l00066"></a>00066 <span class="comment">// Otherwise, n fails.</span>
+<a name="l00067"></a>00067 integer test=<a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(b, r, n);
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (test==<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() || test==nMinus1) <span class="keywordflow">return</span> 1; <span class="comment">// Better than 3/4 chance it's prime</span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keywordflow">while</span> (a-->0) {
+<a name="l00071"></a>00071 test=<a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(test, n);
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (test==nMinus1) <span class="keywordflow">return</span> 1;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> -1;
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> 0;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 } <span class="comment">// namespace</span>
+<a name="l00080"></a>00080
+<a name="l00101"></a>00101 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (n < 2) <span class="keywordflow">throw</span> exceptions::invalid_argument(<span class="stringliteral">"xint::is_prime cannot test "</span>
+<a name="l00103"></a>00103 <span class="stringliteral">"numbers below 2"</span>);
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="comment">// First we trial-divide it by the primes below 2000</span>
+<a name="l00106"></a>00106 <span class="keyword">static</span> <span class="keyword">const</span> std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
+<a name="l00107"></a>00107 std::vector<int>::const_iterator i=cLowPrimes.begin(), ie=cLowPrimes.end();
+<a name="l00108"></a>00108 <span class="keywordflow">for</span> (; i!=ie; ++i) <span class="keywordflow">if</span> ((n % *i)==0) <span class="keywordflow">return</span> (n==*i);
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="comment">// Run the number through the Miller-Rabin Probabilistic Test of Primality</span>
+<a name="l00111"></a>00111 <span class="comment">// a few times to see if it's actually (probably) prime.</span>
+<a name="l00112"></a>00112 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> count=0; count<5; ++count) {
+<a name="l00113"></a>00113 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">detail::get_random</a>();
+<a name="l00114"></a>00114 <span class="keywordtype">int</span> isP=isProbablePrimeBaseB(n, k, callback);
+<a name="l00115"></a>00115 <span class="keywordflow">if</span> (isP <= 0) <span class="keywordflow">return</span> isP;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 <span class="keywordflow">return</span> 1; <span class="comment">// Appears to be prime!</span>
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119
+<a name="l00142"></a>00142 integer <a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00143"></a>00143 <span class="keywordflow">if</span> (size_in_bits < 2) <span class="keywordflow">throw</span> exceptions::invalid_argument(<span class="stringliteral">"cannot create "</span>
+<a name="l00144"></a>00144 <span class="stringliteral">"prime numbers smaller than two bits"</span>);
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="comment">// Call the callback for the first time</span>
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 integer pe=<a class="code" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e">pow2</a>(size_in_bits+1);
+<a name="l00150"></a>00150 <span class="keywordflow">while</span> (1) {
+<a name="l00151"></a>00151 integer p(<a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(size_in_bits, <span class="keyword">true</span>, <span class="keyword">true</span>));
+<a name="l00152"></a>00152 <span class="keywordflow">while</span> (p < pe) {
+<a name="l00153"></a>00153 <span class="keywordtype">int</span> r=<a class="code" href="namespaceboost_1_1xint.html#ad581832932a4816cbc9f24740732c3a0">is_prime</a>(p, callback);
+<a name="l00154"></a>00154 <span class="keywordflow">if</span> (r < 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (r == 1) <span class="keywordflow">return</span> p;
+<a name="l00156"></a>00156 p+=2;
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 } <span class="comment">// namespace xint</span>
+<a name="l00162"></a>00162 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/primes_8dox.html
==============================================================================
--- sandbox/xint/doc/primes_8dox.html (original)
+++ sandbox/xint/doc/primes_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/primes.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/primitives_8cpp.html
==============================================================================
--- sandbox/xint/doc/primitives_8cpp.html (original)
+++ sandbox/xint/doc/primitives_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,39 +36,34 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core::abs</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core::negate</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core::add</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core::subtract</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core::multiply</a> (const integer &n, const integer &by)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint::abs</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint::negate</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for math primitives. </p>
<p>Definition in file <a class="el" href="primitives_8cpp_source.html">primitives.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/primitives_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/primitives_8cpp_source.html (original)
+++ sandbox/xint/doc/primitives_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -38,247 +38,240 @@
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <cassert></span>
-<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="keyword">using namespace </span>detail;
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="keyword">namespace </span>core {
-<a name="l00028"></a>00028
-<a name="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00036"></a>00036 <span class="keywordflow">return</span> (n.sign() < 0 ? -n : n);
-<a name="l00037"></a>00037 }
-<a name="l00038"></a>00038
-<a name="l00045"></a>00045 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00046"></a>00046 integer nn(n);
-<a name="l00047"></a>00047 nn._make_unique();
-<a name="l00048"></a>00048 nn._get_data()->negate();
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> nn;
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00058"></a>00058 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
-<a name="l00059"></a>00059 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), sign2=n2.sign();
-<a name="l00060"></a>00060 <span class="keywordflow">if</span> (sign1 != sign2) {
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> n2;
-<a name="l00062"></a>00062 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> n1;
-<a name="l00063"></a>00063 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(n1, -n2);
-<a name="l00064"></a>00064 } <span class="keywordflow">else</span> {
-<a name="l00065"></a>00065 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
-<a name="l00066"></a>00066 <span class="keywordflow">if</span> (n1data->mLength < n2data->mLength) std::swap(n1data, n2data);
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 integer r;
-<a name="l00069"></a>00069 data_t *rdata=r._get_data();
-<a name="l00070"></a>00070 rdata->copy(n1data, 1);
-<a name="l00071"></a>00071 rdata->add(*n2data);
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> r;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00082"></a>00082 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
-<a name="l00083"></a>00083 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), sign2=n2.sign();
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (sign1 != sign2) {
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (sign1 == 0) <span class="keywordflow">return</span> -n2;
-<a name="l00086"></a>00086 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">return</span> n1;
-<a name="l00087"></a>00087 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(n1, -n2);
-<a name="l00088"></a>00088 } <span class="keywordflow">else</span> {
-<a name="l00089"></a>00089 <span class="keywordtype">bool</span> invert=(sign1 == (n1 < n2 ? 1 : -1));
-<a name="l00090"></a>00090 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (invert) std::swap(n1data, n2data);
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 integer r;
-<a name="l00094"></a>00094 data_t *rdata=r._get_data();
-<a name="l00095"></a>00095 rdata->copy(n1data);
-<a name="l00096"></a>00096 rdata->subtract(*n2data);
-<a name="l00097"></a>00097 <span class="keywordflow">return</span> (invert ? -r : r);
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00111"></a>00111 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
-<a name="l00112"></a>00112 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), bysign=by.sign();
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (nsign==0 || bysign==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keyword">const</span> data_t *ndata=n._get_data(), *bydata=by._get_data();
-<a name="l00116"></a>00116 <span class="keywordflow">if</span> (ndata == bydata) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(n);
+<a name="l00019"></a>00019 <span class="preprocessor">#include <cassert></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">using namespace </span>detail;
+<a name="l00025"></a>00025
+<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint.html#a0e114c276fc9affcc068dd5f0fbd9ff9">abs</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00033"></a>00033 <span class="keywordflow">return</span> (n.sign() < 0 ? -n : n);
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00042"></a>00042 integer <a class="code" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00043"></a>00043 integer nn(n);
+<a name="l00044"></a>00044 nn._set_negative(!nn._get_negative());
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> nn;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00054"></a>00054 integer <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00055"></a>00055 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">sign</a>(), sign2=n2.sign();
+<a name="l00056"></a>00056 <span class="keywordflow">if</span> (sign1 != sign2) {
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> n2;
+<a name="l00058"></a>00058 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> n1;
+<a name="l00059"></a>00059 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(n1, -n2);
+<a name="l00060"></a>00060 } <span class="keywordflow">else</span> {
+<a name="l00061"></a>00061 <span class="keywordtype">bool</span> swap(n1._get_length() < n2._get_length());
+<a name="l00062"></a>00062 <span class="keyword">const</span> integer &larger(swap ? n2 : n1), &smaller(swap ? n1 : n2);
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 integer r;
+<a name="l00065"></a>00065 r._duplicate(larger, 1);
+<a name="l00066"></a>00066 r._add(smaller);
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> r;
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070
+<a name="l00077"></a>00077 integer <a class="code" href="namespaceboost_1_1xint.html#a385b3869d8dcceab2ffb68ff33c95062">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00078"></a>00078 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">sign</a>(), sign2=n2.sign();
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (sign1 != sign2) {
+<a name="l00080"></a>00080 <span class="keywordflow">if</span> (sign1 == 0) <span class="keywordflow">return</span> -n2;
+<a name="l00081"></a>00081 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">return</span> n1;
+<a name="l00082"></a>00082 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a7b7903cb879b60d0d5e3403b3c6a1cdd">add</a>(n1, -n2);
+<a name="l00083"></a>00083 } <span class="keywordflow">else</span> {
+<a name="l00084"></a>00084 <span class="keywordtype">bool</span> swap=(sign1 == (n1 < n2 ? 1 : -1));
+<a name="l00085"></a>00085 <span class="keyword">const</span> integer &larger(swap ? n2 : n1), &smaller(swap ? n1 : n2);
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 integer r;
+<a name="l00088"></a>00088 r._duplicate(larger, 1);
+<a name="l00089"></a>00089 r._subtract(smaller);
+<a name="l00090"></a>00090 <span class="keywordflow">return</span> (swap ? -r : r);
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00104"></a>00104 integer <a class="code" href="namespaceboost_1_1xint.html#af844548a421cfc751133081b334dbe4b">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
+<a name="l00105"></a>00105 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1nothrow__integer.html#a76bc6cf5315c6b7ee6083f28acfa7ddf">sign</a>(), bysign=by.sign();
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (nsign==0 || bysign==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ndigits=n._get_digits(), *bydigits=by._get_digits();
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (ndigits==bydigits) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a83ce32006b45117f9b3dc6c673fc9f01">sqr</a>(n);
+<a name="l00110"></a>00110 <span class="keywordtype">size_t</span> nlen=n._get_length(), bylen=by._get_length();
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="comment">// In multiplication, we know that the answer will be less than or equal to</span>
+<a name="l00113"></a>00113 <span class="comment">// the sum of the lengths of the operands.</span>
+<a name="l00114"></a>00114 integer answer;
+<a name="l00115"></a>00115 answer._realloc(nlen + bylen);
+<a name="l00116"></a>00116 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *adigits=answer._get_digits();
<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="comment">// In multiplication, we know that the answer will be less than or equal to</span>
-<a name="l00119"></a>00119 <span class="comment">// the sum of the lengths of the operands.</span>
-<a name="l00120"></a>00120 integer answer;
-<a name="l00121"></a>00121 data_t *answerdata=answer._get_data();
-<a name="l00122"></a>00122 answerdata->alloc(ndata->mLength + bydata->mLength);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Now multiply the digits, starting at the least-significant digit.</span>
-<a name="l00125"></a>00125 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1 = ndata->digits, *d1e = d1 + ndata->mLength;
-<a name="l00126"></a>00126 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2e = bydata->digits + bydata->mLength;
-<a name="l00127"></a>00127 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit1=0; d1<d1e; ++digit1, ++d1) {
-<a name="l00128"></a>00128 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2=bydata->digits;
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit2=0; d2<d2e; ++digit2, ++d2) {
-<a name="l00130"></a>00130 <span class="comment">// First multiply the two digits</span>
-<a name="l00131"></a>00131 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*d1) * *d2;
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// Now add the result to the answer.</span>
-<a name="l00134"></a>00134 <span class="keywordtype">int</span> carry=0;
-<a name="l00135"></a>00135 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *a = answerdata->digits + digit1 + digit2;
-<a name="l00136"></a>00136 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> addt=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*a) + (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1;
-<a name="l00138"></a>00138 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 addt=*a + ((t >> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) + carry;
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1; <span class="keywordflow">else</span> carry=0;
-<a name="l00142"></a>00142 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keywordflow">while</span> (carry) {
-<a name="l00145"></a>00145 addt=*a+1;
-<a name="l00146"></a>00146 *a++ = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
-<a name="l00147"></a>00147 <span class="keywordflow">if</span> (addt < <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) <span class="keywordflow">break</span>;
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 answer._set_negative(nsign != bysign);
-<a name="l00153"></a>00153 answer._get_data()->skipLeadingZeros();
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> answer;
-<a name="l00155"></a>00155 }
+<a name="l00118"></a>00118 <span class="comment">// Now multiply the digits, starting at the least-significant digit.</span>
+<a name="l00119"></a>00119 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1 = ndigits, *d1e = d1 + nlen;
+<a name="l00120"></a>00120 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2e = bydigits + bylen;
+<a name="l00121"></a>00121 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit1=0; d1<d1e; ++digit1, ++d1) {
+<a name="l00122"></a>00122 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2=bydigits;
+<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit2=0; d2<d2e; ++digit2, ++d2) {
+<a name="l00124"></a>00124 <span class="comment">// First multiply the two digits</span>
+<a name="l00125"></a>00125 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*d1) * *d2;
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="comment">// Now add the result to the answer.</span>
+<a name="l00128"></a>00128 <span class="keywordtype">int</span> carry=0;
+<a name="l00129"></a>00129 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *a = adigits + digit1 + digit2;
+<a name="l00130"></a>00130 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> addt=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*a) + (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1;
+<a name="l00132"></a>00132 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 addt=*a + ((t >> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) + carry;
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1; <span class="keywordflow">else</span> carry=0;
+<a name="l00136"></a>00136 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keywordflow">while</span> (carry) {
+<a name="l00139"></a>00139 addt=*a+1;
+<a name="l00140"></a>00140 *a++ = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
+<a name="l00141"></a>00141 <span class="keywordflow">if</span> (addt < <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) <span class="keywordflow">break</span>;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 answer._set_negative(nsign != bysign);
+<a name="l00147"></a>00147 answer._cleanup();
+<a name="l00148"></a>00148 <span class="keywordflow">return</span> answer;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keyword">namespace </span>{
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 std::pair<integer, integer> divideBySingleDigit(<span class="keyword">const</span> integer& d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2) {
+<a name="l00154"></a>00154 <span class="keywordtype">size_t</span> d1len=d1._get_length();
+<a name="l00155"></a>00155 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1digits=d1._get_digits();
<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keyword">namespace </span>{
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 std::pair<integer, integer> divideBySingleDigit(<span class="keyword">const</span> integer& d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2) {
-<a name="l00160"></a>00160 <span class="keyword">const</span> data_t *d1data=d1._get_data();
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 integer quotient, remainder;
-<a name="l00163"></a>00163 data_t *qdata=quotient._get_data(), *rdata=remainder._get_data();
-<a name="l00164"></a>00164 qdata->alloc(d1data->mLength);
-<a name="l00165"></a>00165 rdata->alloc(1);
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> a=0;
-<a name="l00168"></a>00168 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> lomask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
-<a name="l00169"></a>00169 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> himask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 <span class="keywordtype">int</span> m = int(d1data->mLength) - 1;
-<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1p=d1data->digits+m;
-<a name="l00173"></a>00173 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *qp=qdata->digits+m;
-<a name="l00174"></a>00174 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = m; i >= 0; --i, --d1p, --qp) {
-<a name="l00175"></a>00175 a = (a & ~lomask) | *d1p;
-<a name="l00176"></a>00176 *qp = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(a / d2);
-<a name="l00177"></a>00177 a = (a & ~himask) | ((a % d2) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179 rdata->digits[0] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>((a & himask) >>
-<a name="l00180"></a>00180 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 qdata->skipLeadingZeros();
-<a name="l00183"></a>00183 rdata->skipLeadingZeros();
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 std::pair<integer, integer> subDivide(integer d1, integer d2) {
-<a name="l00188"></a>00188 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *byDigits = d2._get_data()->digits;
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="comment">// The normalization step</span>
-<a name="l00191"></a>00191 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> /
-<a name="l00192"></a>00192 (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(byDigits[d2._get_length()-1])+1));
-<a name="l00193"></a>00193 <span class="keywordflow">if</span> (d > 1) {
-<a name="l00194"></a>00194 d1 *= d;
-<a name="l00195"></a>00195 d2 *= d;
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="comment">// Gotta reset this</span>
-<a name="l00198"></a>00198 byDigits = d2._get_data()->digits;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200 assert(d2._get_digit(d2._get_length()-1) >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> / 2);
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 integer quotient, r(d1);
-<a name="l00203"></a>00203 data_t *qdata=quotient._get_data();
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="keywordtype">size_t</span> n=d2._get_length(), m=d1._get_length() - n;
-<a name="l00206"></a>00206 <span class="keywordtype">size_t</span> i=m+n, j=m;
-<a name="l00207"></a>00207 qdata->alloc(j+1);
+<a name="l00157"></a>00157 integer quotient, remainder;
+<a name="l00158"></a>00158 quotient._realloc(d1len);
+<a name="l00159"></a>00159 remainder._realloc(1);
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> a=0;
+<a name="l00162"></a>00162 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> lomask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
+<a name="l00163"></a>00163 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> himask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 <span class="keywordtype">int</span> m = int(d1len) - 1;
+<a name="l00166"></a>00166 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1p=d1digits+m;
+<a name="l00167"></a>00167 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *qp=quotient._get_digits()+m;
+<a name="l00168"></a>00168 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = m; i >= 0; --i, --d1p, --qp) {
+<a name="l00169"></a>00169 a = (a & ~lomask) | *d1p;
+<a name="l00170"></a>00170 *qp = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(a / d2);
+<a name="l00171"></a>00171 a = (a & ~himask) | ((a % d2) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173 remainder._get_digits()[0] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>((a & himask) >>
+<a name="l00174"></a>00174 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 quotient._cleanup();
+<a name="l00177"></a>00177 remainder._cleanup();
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 std::pair<integer, integer> subDivide(integer d1, integer d2) {
+<a name="l00182"></a>00182 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *byDigits = d2._get_digits();
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 <span class="comment">// The normalization step</span>
+<a name="l00185"></a>00185 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> /
+<a name="l00186"></a>00186 (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(byDigits[d2._get_length()-1])+1));
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (d > 1) {
+<a name="l00188"></a>00188 d1 *= d;
+<a name="l00189"></a>00189 d2 *= d;
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="comment">// Gotta reset this</span>
+<a name="l00192"></a>00192 byDigits = d2._get_digits();
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 assert(d2._get_digit(d2._get_length()-1) >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> / 2);
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 integer quotient, r(d1);
+<a name="l00197"></a>00197
+<a name="l00198"></a>00198 <span class="keywordtype">size_t</span> n=d2._get_length(), m=d1._get_length() - n;
+<a name="l00199"></a>00199 <span class="keywordtype">size_t</span> i=m+n, j=m;
+<a name="l00200"></a>00200 quotient._realloc(j+1);
+<a name="l00201"></a>00201 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *qdigits=quotient._get_digits();
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 r._make_unique();
+<a name="l00204"></a>00204 <span class="keywordflow">do</span> {
+<a name="l00205"></a>00205 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> ri=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(r._get_digit(i, <span class="keyword">true</span>))
+<a name="l00206"></a>00206 << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-1, <span class="keyword">true</span>);
+<a name="l00207"></a>00207 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> q=(std::min<doubledigit_t>)(ri / byDigits[n-1], <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
<a name="l00208"></a>00208
-<a name="l00209"></a>00209 r._make_unique();
-<a name="l00210"></a>00210 <span class="keywordflow">do</span> {
-<a name="l00211"></a>00211 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> ri=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(r._get_digit(i, <span class="keyword">true</span>))
-<a name="l00212"></a>00212 << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-1, <span class="keyword">true</span>);
-<a name="l00213"></a>00213 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> q=(std::min<doubledigit_t>)(ri / byDigits[n-1], <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="keywordflow">while</span> (1) {
-<a name="l00216"></a>00216 <span class="comment">// We need three digits here, a doubledigit_t won't suffice.</span>
-<a name="l00217"></a>00217 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> r2a=ri - (q * byDigits[n-1]);
-<a name="l00218"></a>00218 integer r2=(integer(r2a) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-2);
-<a name="l00219"></a>00219 <span class="keywordflow">if</span> (byDigits[n-2] * q <= r2) <span class="keywordflow">break</span>;
-<a name="l00220"></a>00220 --q;
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 integer bq=d2*q;
-<a name="l00224"></a>00224 <span class="keywordflow">if</span> (r < bq) { --q; bq -= d2; }
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 integer rtemp((r >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * (i-n))) - bq);
-<a name="l00227"></a>00227 data_t *rdata=r._get_data();
+<a name="l00209"></a>00209 <span class="keywordflow">while</span> (1) {
+<a name="l00210"></a>00210 <span class="comment">// We need three digits here, a doubledigit_t won't suffice.</span>
+<a name="l00211"></a>00211 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> r2a=ri - (q * byDigits[n-1]);
+<a name="l00212"></a>00212 integer r2=(integer(r2a) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-2);
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (byDigits[n-2] * q <= r2) <span class="keywordflow">break</span>;
+<a name="l00214"></a>00214 --q;
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217 integer bq=d2*q;
+<a name="l00218"></a>00218 <span class="keywordflow">if</span> (r < bq) { --q; bq -= d2; }
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 integer rtemp((r >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * (i-n))) - bq);
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *rdigits=r._get_digits();
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 <span class="keywordtype">size_t</span> rlen=r._get_length();
+<a name="l00225"></a>00225 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<=n && i-n+x < rlen; ++x)
+<a name="l00226"></a>00226 rdigits[i-n+x]=rtemp._get_digit(x, <span class="keyword">true</span>);
+<a name="l00227"></a>00227 r._cleanup();
<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *rdigits=rdata->digits;
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<=n && i-n+x < rdata->mLength; ++x)
-<a name="l00232"></a>00232 rdigits[i-n+x]=rtemp._get_digit(x, <span class="keyword">true</span>);
-<a name="l00233"></a>00233 rdata->skipLeadingZeros();
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 qdata->digits[j--]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(q);
-<a name="l00236"></a>00236 } <span class="keywordflow">while</span> (--i >= n);
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 qdata->skipLeadingZeros();
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240 <span class="keywordflow">if</span> (d > 1) {
-<a name="l00241"></a>00241 <span class="comment">// Denormalization step. This requires a division by a single digit_t.</span>
-<a name="l00242"></a>00242 integer remainder=divideBySingleDigit(r, d).first;
-<a name="l00243"></a>00243 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
-<a name="l00244"></a>00244 } <span class="keywordflow">else</span> {
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> std::make_pair(quotient, r);
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 } <span class="comment">// namespace</span>
-<a name="l00250"></a>00250
-<a name="l00259"></a>00259 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
-<a name="l00260"></a>00260 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(dividend, divisor).first;
-<a name="l00261"></a>00261 }
-<a name="l00262"></a>00262
-<a name="l00274"></a>00274 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span> integer& d2) {
-<a name="l00275"></a>00275 <span class="keywordtype">int</span> sign1=d1.sign(), sign2=d2.sign();
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">throw</span> divide_by_zero();
-<a name="l00277"></a>00277
-<a name="l00278"></a>00278 <span class="keywordtype">int</span> comp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(d1, d2, <span class="keyword">true</span>);
-<a name="l00279"></a>00279 <span class="keywordflow">if</span> (comp<0) {
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(), d1);
-<a name="l00281"></a>00281 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp==0) {
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> std::make_pair(sign1 != sign2 ? <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() : integer(-1),
-<a name="l00283"></a>00283 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>());
-<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286 <span class="keywordflow">if</span> (sign1 < 0 && sign2 < 0) {
-<a name="l00287"></a>00287 std::pair<integer, integer> a=subDivide(-d1, -d2);
-<a name="l00288"></a>00288 a.second._set_negative(<span class="keyword">true</span>);
-<a name="l00289"></a>00289 <span class="keywordflow">return</span> a;
-<a name="l00290"></a>00290 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 < 0) {
-<a name="l00291"></a>00291 std::pair<integer, integer> a=subDivide(-d1, d2);
-<a name="l00292"></a>00292 a.first._set_negative(<span class="keyword">true</span>);
-<a name="l00293"></a>00293 a.second._set_negative(<span class="keyword">true</span>);
-<a name="l00294"></a>00294 <span class="keywordflow">return</span> a;
-<a name="l00295"></a>00295 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 < 0) {
-<a name="l00296"></a>00296 std::pair<integer, integer> a=subDivide(d1, -d2);
-<a name="l00297"></a>00297 a.first._set_negative(<span class="keyword">true</span>);
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> a;
-<a name="l00299"></a>00299 };
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301 <span class="keywordflow">if</span> (d2._get_data()->mLength == 1) {
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> divideBySingleDigit(d1, d2._get_data()->digits[0]);
-<a name="l00303"></a>00303 } <span class="keywordflow">else</span> {
-<a name="l00304"></a>00304 <span class="keywordflow">return</span> subDivide(d1, d2);
-<a name="l00305"></a>00305 }
-<a name="l00306"></a>00306 }
-<a name="l00307"></a>00307
-<a name="l00308"></a>00308 } <span class="comment">// namespace core</span>
-<a name="l00309"></a>00309 } <span class="comment">// namespace xint</span>
-<a name="l00310"></a>00310 } <span class="comment">// namespace boost</span>
+<a name="l00229"></a>00229 qdigits[j--]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(q);
+<a name="l00230"></a>00230 } <span class="keywordflow">while</span> (--i >= n);
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 quotient._cleanup();
+<a name="l00233"></a>00233
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (d > 1) {
+<a name="l00235"></a>00235 <span class="comment">// Denormalization step. This requires a division by a single digit_t.</span>
+<a name="l00236"></a>00236 integer remainder=divideBySingleDigit(r, d).first;
+<a name="l00237"></a>00237 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
+<a name="l00238"></a>00238 } <span class="keywordflow">else</span> {
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> std::make_pair(quotient, r);
+<a name="l00240"></a>00240 }
+<a name="l00241"></a>00241 }
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 } <span class="comment">// namespace</span>
+<a name="l00244"></a>00244
+<a name="l00253"></a>00253 integer <a class="code" href="namespaceboost_1_1xint.html#a5b884361c54aa64a1974879cb3464c9a">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
+<a name="l00254"></a>00254 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(dividend, divisor).first;
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256
+<a name="l00268"></a>00268 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint.html#aa7ba6c482e1526b25e6e946daf3a97ba">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span> integer& d2) {
+<a name="l00269"></a>00269 <span class="keywordtype">int</span> sign1=d1.sign(), sign2=d2.sign();
+<a name="l00270"></a>00270 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">throw</span> exceptions::divide_by_zero();
+<a name="l00271"></a>00271
+<a name="l00272"></a>00272 <span class="keywordtype">int</span> comp=<a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(d1, d2, <span class="keyword">true</span>);
+<a name="l00273"></a>00273 <span class="keywordflow">if</span> (comp<0) {
+<a name="l00274"></a>00274 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>(), d1);
+<a name="l00275"></a>00275 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp==0) {
+<a name="l00276"></a>00276 <span class="keywordflow">return</span> std::make_pair(sign1 != sign2 ? <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() : integer(-1),
+<a name="l00277"></a>00277 <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>());
+<a name="l00278"></a>00278 }
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <span class="keywordflow">if</span> (sign1 < 0 && sign2 < 0) {
+<a name="l00281"></a>00281 std::pair<integer, integer> a=subDivide(-d1, -d2);
+<a name="l00282"></a>00282 a.second._set_negative(<span class="keyword">true</span>);
+<a name="l00283"></a>00283 <span class="keywordflow">return</span> a;
+<a name="l00284"></a>00284 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 < 0) {
+<a name="l00285"></a>00285 std::pair<integer, integer> a=subDivide(-d1, d2);
+<a name="l00286"></a>00286 a.first._set_negative(<span class="keyword">true</span>);
+<a name="l00287"></a>00287 a.second._set_negative(<span class="keyword">true</span>);
+<a name="l00288"></a>00288 <span class="keywordflow">return</span> a;
+<a name="l00289"></a>00289 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 < 0) {
+<a name="l00290"></a>00290 std::pair<integer, integer> a=subDivide(d1, -d2);
+<a name="l00291"></a>00291 a.first._set_negative(<span class="keyword">true</span>);
+<a name="l00292"></a>00292 <span class="keywordflow">return</span> a;
+<a name="l00293"></a>00293 };
+<a name="l00294"></a>00294
+<a name="l00295"></a>00295 <span class="keywordflow">if</span> (d2._get_length() == 1) {
+<a name="l00296"></a>00296 <span class="keywordflow">return</span> divideBySingleDigit(d1, d2._get_digit(0));
+<a name="l00297"></a>00297 } <span class="keywordflow">else</span> {
+<a name="l00298"></a>00298 <span class="keywordflow">return</span> subDivide(d1, d2);
+<a name="l00299"></a>00299 }
+<a name="l00300"></a>00300 }
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 } <span class="comment">// namespace xint</span>
+<a name="l00303"></a>00303 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__core.html
==============================================================================
--- sandbox/xint/doc/r__core.html (original)
+++ sandbox/xint/doc/r__core.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: What's with the \c core and \c blockable namespaces?</title>
+<title>The Extended Integer (XInt) Library: What's with the \c nothrow_integer type?</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,16 +24,15 @@
<div class="contents">
-<h1><a class="anchor" id="r_core">What's with the <code>core</code> and <code>blockable</code> namespaces? </a></h1><p>Several people on the Boost developers' mailing list expressed reservations about the exception-blocking mechanism and the Not-a-Number value. After a spirited debate, two indisputable points emerged:</p>
+<h1><a class="anchor" id="r_core">What's with the <code>nothrow_integer</code> type? </a></h1><p>Several people on the Boost developers' mailing list expressed reservations about the exception-blocking mechanism in the original implementation, and the Not-a-Number value that it required. After a spirited debate, two indisputable points emerged:</p>
<ul>
<li>The existence of a Not-a-Number value forced every function to check its parameters for it.</li>
-<li>The exception blocking mechanism would cause problems with any library built on this one, such as the arbitrary-precision real type that I'm certain someone will build.</li>
+<li>The exception-blocking mechanism would cause problems with any library built on this one, such as the arbitrary-precision real type that I'm certain someone will build.</li>
</ul>
-<p>I believe that the exception-blocking feature is useful, so I proposed a compromise: two <code>integer</code> classes, one that would always contain a valid integer value and would be immune to exception-blocking, and one that would honor exception-blocking and could hold the Not-a-Number value. These now reside in the <code>xint::core</code> and <code>xint::blockable</code> namespaces.</p>
-<p>Functions in the <code>core</code> namespace will always throw an exception on any error, and will only call other functions within the <code>core</code> namespace. That ensures that the Not-a-Number value only needs to be checked for in a single <code>xint::core::integer</code> constructor, and all but eliminates any speed penalty from it. It also gives a base of functions that are immune to the exception-blocking mechanism, which provides firm ground to build other libraries on.</p>
-<p>Every function in the <code>blockable</code> namespace calls its <code>core</code> counterpart in a try/catch construct, allowing it to intercept any exceptions and either pass them through (if exceptions are allowed) or take some alternate action, such as returning a Not-a-Number value. That preserves the exception-blocking feature as well. </p>
+<p>To deal with this, I separated the <code>xint::integer</code> and <code>xint::nothrow_integer</code> types. <code>xint::integer</code> functions now always throw exceptions on errors, and always hold valid numbers; <code>xint::nothrow_integer</code> functions (as implied by the name) never throw exceptions, instead returning the Not-a-Number value (which only <code>xint::nothrow_integer</code> can hold).</p>
+<p>This design ensures that the Not-a-Number value only needs to be checked for in a single place (the <code>xint::integer</code> conversion constructor), and ensures that any speed penalty from it is only incurred by people who choose to use the <code>nothrow_integer</code> type. It also preserves the no-exceptions behavior, which is useful under some circumstances. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__core_8dox.html
==============================================================================
--- sandbox/xint/doc/r__core_8dox.html (original)
+++ sandbox/xint/doc/r__core_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_core.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__cow.html
==============================================================================
--- sandbox/xint/doc/r__cow.html (original)
+++ sandbox/xint/doc/r__cow.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
<h1><a class="anchor" id="r_cow">Why use copy-on-write? I've heard that causes problems with multi-threaded code. </a></h1><p>It's the best way I found to return large <code>integer</code> objects from functions efficiently. Some of these numbers can get huge, and move semantics aren't yet in the current standard. (Once they are, I'll consider removing the copy-on-write stuff.) It is also more CPU- and memory-efficient.</p>
<p>It <em>does</em> cause problems when you try to use the library from multiple threads at the same time. To deal with that, the library can be compiled in a <a class="el" href="threadsafe.html">thread-safe mode</a>, which ensures that every <code>integer</code> gets its own unique storage, among other things. You still have to ensure that only one thread accesses a particular <code>integer</code> at a time. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__cow_8dox.html
==============================================================================
--- sandbox/xint/doc/r__cow_8dox.html (original)
+++ sandbox/xint/doc/r__cow_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_cow.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__default__necessary.html
==============================================================================
--- sandbox/xint/doc/r__default__necessary.html (original)
+++ sandbox/xint/doc/r__default__necessary.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_default_necessary">Okay, then why not make the developer provide one? </a></h1><p>Ease-of-use, and the fact that for many developers, there's little need for cryptographically-secure random numbers. This way, those that need them can take a few simple steps to get them, and those that don't can just use the library as-is. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__default__necessary_8dox.html
==============================================================================
--- sandbox/xint/doc/r__default__necessary_8dox.html (original)
+++ sandbox/xint/doc/r__default__necessary_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_default_necessary.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__exception__blocking.html
==============================================================================
--- sandbox/xint/doc/r__exception__blocking.html (original)
+++ sandbox/xint/doc/r__exception__blocking.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Why have an exception-blocking system at all? Exceptions are standard C++!</title>
+<title>The Extended Integer (XInt) Library: Why have a nothrow_integer type at all?</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,11 +24,11 @@
<div class="contents">
-<h1><a class="anchor" id="r_exception_blocking">Why have an exception-blocking system at all? Exceptions are standard C++! </a></h1><p>Yes, they are, but there are a number of people that dislike them intensely and won't use any library that forces its users to deal with them. But that is not the primary motivation for the exception-blocking mechanism.</p>
+<h1><a class="anchor" id="r_exception_blocking">Why have a nothrow_integer type at all? </a></h1><p>Exceptions are standard C++, but there are a number of people that dislike them intensely and won't use any library that forces its users to deal with them. That is not the primary motivation for the <code>nothrow_integer</code> type though.</p>
<p>There are also times when exception-handling can get in the way of writing code that is easily understandable by other people. Any software developer understands calling a function and checking the return value to see if there was an error; it's a standard idiom in essentially any programming language, and it's even widely used in the C++ Standard Template Library (see std::string::find, for just one example).</p>
-<p>Writing code that is <em>human-readable</em> -- not just machine-readable -- is difficult, and there's little that anyone can do to change that. But this library's exception-blocking mechanism makes it easier to produce such code, with very little effort, by giving the developer a choice: exceptions, error codes, or both, whatever makes for the most readable and understandable code. </p>
+<p>Writing code that is <em>human-readable</em> -- not just machine-readable -- is difficult, and there's little that anyone can do to change that. But giving the developer the choice to use either exceptions or error codes, depending on which is most readable, makes it easier to produce such code, and costs nothing to the people who choose not to use it. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__exception__blocking_8dox.html
==============================================================================
--- sandbox/xint/doc/r__exception__blocking_8dox.html (original)
+++ sandbox/xint/doc/r__exception__blocking_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_exception_blocking.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__insecure__default.html
==============================================================================
--- sandbox/xint/doc/r__insecure__default.html (original)
+++ sandbox/xint/doc/r__insecure__default.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_insecure_default">But why default to an insecure random number generator? Why not default to the secure one? </a></h1><p>Because the secure one isn't available on all systems. If the library relied on <code>random_device</code> as a default, it wouldn't compile under those systems. If it used <code>xint::strong_random_generator</code>, it would compile, but would always fail on them. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__insecure__default_8dox.html
==============================================================================
--- sandbox/xint/doc/r__insecure__default_8dox.html (original)
+++ sandbox/xint/doc/r__insecure__default_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_insecure_default.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__interface.html
==============================================================================
--- sandbox/xint/doc/r__interface.html (original)
+++ sandbox/xint/doc/r__interface.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<dd>
n1744: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1744.pdf </dd></dl>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__interface_8dox.html
==============================================================================
--- sandbox/xint/doc/r__interface_8dox.html (original)
+++ sandbox/xint/doc/r__interface_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_interface.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__interface__design__only.html
==============================================================================
--- sandbox/xint/doc/r__interface__design__only.html (original)
+++ sandbox/xint/doc/r__interface__design__only.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -31,7 +31,7 @@
<li>It does not, at present, implement a multiplication scheme with better performance than the "basecase" mentioned in section 3.4 of n1692, primarily because I haven't had the time to research all of them yet. I suspect that most people using the library will usually be using numbers below the threshold where the more exotic algorithms are faster, but I plan to add at least one of them in the future, maybe several. </li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__interface__design__only_8dox.html
==============================================================================
--- sandbox/xint/doc/r__interface__design__only_8dox.html (original)
+++ sandbox/xint/doc/r__interface__design__only_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_interface_design_only.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__nan.html
==============================================================================
--- sandbox/xint/doc/r__nan.html (original)
+++ sandbox/xint/doc/r__nan.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -24,9 +24,9 @@
<div class="contents">
-<h1><a class="anchor" id="r_nan">Why have a Not-a-Number value? </a></h1><p>Because it's the cleanest way I could find to return answers that don't represent a valid <code>integer</code>, which is necessary for the exception-blocking mechanism. </p>
+<h1><a class="anchor" id="r_nan">Why have a Not-a-Number value? </a></h1><p>Because it's the cleanest way I could find to return answers that don't represent a valid number, which is necessary for the <code>nothrow_integer</code> type. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__nan_8dox.html
==============================================================================
--- sandbox/xint/doc/r__nan_8dox.html (original)
+++ sandbox/xint/doc/r__nan_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_nan.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__negzero.html
==============================================================================
--- sandbox/xint/doc/r__negzero.html (original)
+++ sandbox/xint/doc/r__negzero.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -24,11 +24,9 @@
<div class="contents">
-<h1><a class="anchor" id="r_negzero">Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers? </a></h1><p>Because they're irrelevant to an arbitrary-sized integer library.</p>
-<p>The mathematical concept of zero has no sign. It's neither positive nor negative (or if you prefer, it's both). The concept of a signed zero is used in floating-point numbers to represent a value that's so small that it can't be distinguished from zero, but which may not be an actual zero. Such a non-zero number does have a sign. But mathematically, a negative zero is simply zero.</p>
-<p>The concept of infinity (in either direction) comes up very rarely in an integer library. Since infinity is a concept, not a countable value, it is not included in the library at present. </p>
+<h1><a class="anchor" id="r_negzero">Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers? </a></h1><p>The library does have limited support for a <a class="el" href="zero.html">"negative zero"</a> value, to support an unlimited-precision floating point type that will be built on it later. But infinity is a concept, not a countable value, and as such it is not included in the library at present. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__negzero_8dox.html
==============================================================================
--- sandbox/xint/doc/r__negzero_8dox.html (original)
+++ sandbox/xint/doc/r__negzero_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_negzero.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__random.html
==============================================================================
--- sandbox/xint/doc/r__random.html (original)
+++ sandbox/xint/doc/r__random.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -24,9 +24,9 @@
<div class="contents">
-<h1><a class="anchor" id="r_random">Why did you implement your own random number generator? You should use Boost.Random instead. </a></h1><p>Boost.Random provides <code>boost::random_device</code> to tap into the operating system's strong random number generator, but at the time of this writing, the official released version only defines it for Linux and BSD systems. The current maintainer, Steven Watanabe, says that he has just added Windows compatibility to it, so the xint::strong_random_generator class will likely be reduced to a typedef for <code>boost::random_device</code>, or a thin shell around it, in the near future. </p>
+<h1><a class="anchor" id="r_random">Why did you implement your own random number generator? You should use Boost.Random instead. </a></h1><p>Boost.Random provides <code>boost::random_device</code> to tap into the operating system's strong random number generator, but at the time of this writing, the official released version only defines it for Linux and BSD systems. The current maintainer, Steven Watanabe, says that he has just added Windows compatibility to it, so the <code>xint::strong_random_generator</code> class will likely be reduced to a typedef for <code>boost::random_device</code>, or a thin shell around it, in the near future. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__random_8dox.html
==============================================================================
--- sandbox/xint/doc/r__random_8dox.html (original)
+++ sandbox/xint/doc/r__random_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_random.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__shared__ptr.html
==============================================================================
--- sandbox/xint/doc/r__shared__ptr.html (original)
+++ sandbox/xint/doc/r__shared__ptr.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_shared_ptr">Why are you using a roll-your-own system instead of <code>boost::shared_ptr</code> for the copy-on-write stuff? </a></h1><p>Because it's a lot faster. I tried <code>boost::shared_ptr</code>, and under Linux with GCC 4.4.1 on the same computer, running my test suite went from 1.6 seconds to 3.4 seconds. The home-grown shared pointer design may not be quite as easy to work with in an exception-safe manner, but that's completely internal to the <code>integer</code> class, so only developers working <em>on</em> the library, rather than <em>with</em> it, have to deal with that. I'll accept that trade-off. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/r__shared__ptr_8dox.html
==============================================================================
--- sandbox/xint/doc/r__shared__ptr_8dox.html (original)
+++ sandbox/xint/doc/r__shared__ptr_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_shared_ptr.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/random.html
==============================================================================
--- sandbox/xint/doc/random.html (original)
+++ sandbox/xint/doc/random.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -25,10 +25,10 @@
<h1><a class="anchor" id="random">The XInt Random Number System </a></h1><p>The library includes a random number system to support the <code>xint::random_prime</code> function. The default random number generator is <em>not</em> cryptographically secure (see <a class="el" href="rationale.html">the rationale page</a> for details). However, the system can easily be configured to use a cryptographically-secure generator.</p>
-<p>The XInt library provides a convenience class, <code>xint::strong_random_generator</code>, for both Windows and UNIX-derived systems. It will throw an exception of type <code>xint::no_strong_random</code> if you try to instantiate it on a system that does not have a strong random number generator.</p>
+<p>The XInt library provides a convenience class, <code>xint::strong_random_generator</code>, for both Windows and UNIX-derived systems. It will throw an exception of type <code>no_strong_random</code> if you try to instantiate it on a system that does not have a strong random number generator.</p>
<p>See the code at the top of <a class="el" href="primes.html">the Prime Numbers page</a> for an example of how to use it. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/random_8cpp.html
==============================================================================
--- sandbox/xint/doc/random_8cpp.html (original)
+++ sandbox/xint/doc/random_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,7 +36,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -44,11 +44,6 @@
<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
-<br/></td></tr>
-</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">boost::xint::detail::set_random_generator</a> (base_random_generator *obj)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
@@ -56,15 +51,15 @@
<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for the random number functions. </p>
<p>Definition in file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/random_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/random_8cpp_source.html (original)
+++ sandbox/xint/doc/random_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -44,197 +44,200 @@
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor"> #include <windows.h></span>
<a name="l00023"></a>00023 <span class="preprocessor">#endif</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <vector></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <sstream></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <fstream></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <ctime></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <boost/random/mersenne_twister.hpp></span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="preprocessor">#ifdef XINT_THREADSAFE</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor"> #include <boost/thread.hpp></span>
-<a name="l00035"></a>00035 <span class="preprocessor">#endif</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span>
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>boost {
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>xint {
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keyword">using namespace </span>detail;
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keyword">namespace </span>{
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="keyword">class </span>generator_t {
-<a name="l00045"></a>00045 <span class="keyword">public</span>:
-<a name="l00046"></a>00046 <span class="keyword">typedef</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">base_random_generator::result_type</a> result_type;
-<a name="l00047"></a>00047 <span class="keyword">typedef</span> boost::mt19937 default_random_t;
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="preprocessor"> #ifdef XINT_THREADSAFE</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span> generator_t() { mLock.lock(); init(); }
-<a name="l00051"></a>00051 ~generator_t() { mLock.unlock(); }
-<a name="l00052"></a>00052 <span class="preprocessor"> #else</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span> generator_t() { init(); }
-<a name="l00054"></a>00054 <span class="preprocessor"> #endif</span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span>
-<a name="l00056"></a>00056 result_type operator()() { <span class="keywordflow">return</span> mGeneratorObj->operator()(); }
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="keyword">static</span> <span class="keywordtype">void</span> set_generator(base_random_generator *p) { mGeneratorObj.reset(p); }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="keyword">private</span>:
-<a name="l00061"></a>00061 <span class="keywordtype">void</span> init() {
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (mGeneratorObj.get() == 0) {
-<a name="l00063"></a>00063 <span class="keyword">typedef</span> default_random_t T;
-<a name="l00064"></a>00064 T *genobj(<span class="keyword">new</span> T(boost::uint32_t(time(0)+clock())));
-<a name="l00065"></a>00065 random_generator<T> *obj=<span class="keyword">new</span> random_generator<T>(genobj);
-<a name="l00066"></a>00066 set_generator(obj);
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keyword">static</span> std::auto_ptr<base_random_generator> mGeneratorObj;
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="preprocessor"> #ifdef XINT_THREADSAFE</span>
-<a name="l00073"></a>00073 <span class="preprocessor"></span> <span class="keyword">static</span> boost::mutex mLock;
-<a name="l00074"></a>00074 <span class="preprocessor"> #endif</span>
-<a name="l00075"></a>00075 <span class="preprocessor"></span>};
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 std::auto_ptr<base_random_generator> generator_t::mGeneratorObj;
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="preprocessor">#ifdef XINT_THREADSAFE</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> boost::mutex generator_t::mLock;
-<a name="l00081"></a>00081 <span class="preprocessor">#endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>
-<a name="l00083"></a>00083 } <span class="comment">// namespace</span>
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="keyword">namespace </span>detail {
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">set_random_generator</a>(base_random_generator *obj) {
-<a name="l00088"></a>00088 generator_t::set_generator(obj);
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">get_random</a>() {
-<a name="l00092"></a>00092 generator_t gen;
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> gen();
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 } <span class="comment">// namespace detail</span>
-<a name="l00097"></a>00097
-<a name="l00099"></a>00099 <span class="comment">// The secure random generator</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "../boost/xint/integer.hpp"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "../boost/xint/random.hpp"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "../boost/xint/exceptions.hpp"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <sstream></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <fstream></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include <ctime></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include <memory></span> <span class="comment">// for auto_ptr</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include <boost/random/mersenne_twister.hpp></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include <boost/static_assert.hpp></span>
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="preprocessor">#ifdef XINT_THREADSAFE</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor"> #include <boost/thread.hpp></span>
+<a name="l00038"></a>00038 <span class="preprocessor">#endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span>
+<a name="l00040"></a>00040 <span class="keyword">namespace </span>boost {
+<a name="l00041"></a>00041 <span class="keyword">namespace </span>xint {
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keyword">using namespace </span>detail;
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <span class="keyword">namespace </span>{
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="keyword">class </span>generator_t {
+<a name="l00048"></a>00048 <span class="keyword">public</span>:
+<a name="l00049"></a>00049 <span class="keyword">typedef</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">base_random_generator::result_type</a> result_type;
+<a name="l00050"></a>00050 <span class="keyword">typedef</span> boost::mt19937 default_random_t;
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="preprocessor"> #ifdef XINT_THREADSAFE</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span> generator_t() { mLock.lock(); init(); }
+<a name="l00054"></a>00054 ~generator_t() { mLock.unlock(); }
+<a name="l00055"></a>00055 <span class="preprocessor"> #else</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span> generator_t() { init(); }
+<a name="l00057"></a>00057 <span class="preprocessor"> #endif</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span>
+<a name="l00059"></a>00059 result_type operator()() { <span class="keywordflow">return</span> mGeneratorObj->operator()(); }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keyword">static</span> <span class="keywordtype">void</span> set_generator(base_random_generator *p) { mGeneratorObj.reset(p); }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="keyword">private</span>:
+<a name="l00064"></a>00064 <span class="keywordtype">void</span> init() {
+<a name="l00065"></a>00065 <span class="keywordflow">if</span> (mGeneratorObj.get() == 0) {
+<a name="l00066"></a>00066 <span class="keyword">typedef</span> default_random_t T;
+<a name="l00067"></a>00067 T *genobj(<span class="keyword">new</span> T(boost::uint32_t(time(0)+clock())));
+<a name="l00068"></a>00068 random_generator<T> *obj=<span class="keyword">new</span> random_generator<T>(genobj);
+<a name="l00069"></a>00069 set_generator(obj);
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keyword">static</span> std::auto_ptr<base_random_generator> mGeneratorObj;
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="preprocessor"> #ifdef XINT_THREADSAFE</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span> <span class="keyword">static</span> boost::mutex mLock;
+<a name="l00077"></a>00077 <span class="preprocessor"> #endif</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span>};
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 std::auto_ptr<base_random_generator> generator_t::mGeneratorObj;
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="preprocessor">#ifdef XINT_THREADSAFE</span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span> boost::mutex generator_t::mLock;
+<a name="l00084"></a>00084 <span class="preprocessor">#endif</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span>
+<a name="l00086"></a>00086 } <span class="comment">// namespace</span>
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">namespace </span>detail {
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">set_random_generator</a>(base_random_generator *obj) {
+<a name="l00091"></a>00091 generator_t::set_generator(obj);
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">get_random</a>() {
+<a name="l00095"></a>00095 generator_t gen;
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> gen();
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 } <span class="comment">// namespace detail</span>
<a name="l00100"></a>00100
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l00104"></a>00104 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
-<a name="l00105"></a>00105 <span class="keyword">typedef</span> BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
-<a name="l00106"></a>00106 <span class="keyword">typedef</span> DWORD <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 impl_t(): dll(0), fn(0) {
-<a name="l00109"></a>00109 <span class="comment">// This should work under WinXP, Vista, and Win7. No guarantees about</span>
-<a name="l00110"></a>00110 <span class="comment">// future compatibility, but I doubt that Microsoft will get rid of it</span>
-<a name="l00111"></a>00111 <span class="comment">// (it's too useful), and I doubt that they'll change it now that it's</span>
-<a name="l00112"></a>00112 <span class="comment">// well-known (it would break too many programs). We could also use the</span>
-<a name="l00113"></a>00113 <span class="comment">// rand_s function in more recent versions of Visual C++, but that</span>
-<a name="l00114"></a>00114 <span class="comment">// causes compatibility problems with older versions of Windows.</span>
-<a name="l00115"></a>00115 dll=LoadLibraryA(<span class="stringliteral">"Advapi32.dll"</span>);
-<a name="l00116"></a>00116 <span class="keywordflow">if</span> (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll, <span class="stringliteral">"SystemFunction036"</span>));
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (fn == 0) {
-<a name="l00118"></a>00118 destroy();
-<a name="l00119"></a>00119 <span class="keywordflow">throw</span> no_strong_random();
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 ~impl_t() { destroy(); }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>() {
-<a name="l00126"></a>00126 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> r=0;
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (!fn(&r, <span class="keyword">sizeof</span>(<a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>)))
-<a name="l00128"></a>00128 <span class="keywordflow">throw</span> no_strong_random(<span class="stringliteral">"RtlGenRandom failed"</span>);
-<a name="l00129"></a>00129 <span class="keywordflow">return</span> r;
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keywordtype">void</span> destroy() { <span class="keywordflow">if</span> (dll) FreeLibrary(dll); }
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 HMODULE dll;
-<a name="l00135"></a>00135 RtlGenRandomFn fn;
-<a name="l00136"></a>00136 };
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 32; }
-<a name="l00139"></a>00139 <span class="preprocessor">#else</span>
-<a name="l00140"></a>00140 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
-<a name="l00141"></a>00141 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 impl_t(): rng(<span class="stringliteral">"/dev/urandom"</span>, std::ios::binary) {
-<a name="l00144"></a>00144 <span class="comment">// This should be supported under most non-Windows systems. Note</span>
-<a name="l00145"></a>00145 <span class="comment">// that we're using /dev/urandom, not /dev/random -- /dev/random is</span>
-<a name="l00146"></a>00146 <span class="comment">// more secure, but it can be VERY slow.</span>
-<a name="l00147"></a>00147 <span class="keywordflow">if</span> (!rng) <span class="keywordflow">throw</span> no_strong_random();
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>() {
-<a name="l00151"></a>00151 <span class="keywordtype">int</span> r=rng.get();
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (r==EOF) <span class="keywordflow">throw</span> no_strong_random(<span class="stringliteral">"/dev/urandom returned EOF"</span>);
-<a name="l00153"></a>00153 <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a><span class="keyword">></span>(r);
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 std::ifstream rng;
-<a name="l00157"></a>00157 };
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 8; }
-<a name="l00160"></a>00160 <span class="preprocessor">#endif</span>
-<a name="l00161"></a>00161 <span class="preprocessor"></span>
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">strong_random_generator::has_fixed_range</a> = <span class="keyword">true</span>;
-<a name="l00165"></a>00165 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">strong_random_generator::min_value</a> =
-<a name="l00166"></a>00166 (std::numeric_limits<impl_t::result_type>::min)();
-<a name="l00167"></a>00167 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">strong_random_generator::max_value</a> =
-<a name="l00168"></a>00168 (std::numeric_limits<impl_t::result_type>::max)();
-<a name="l00169"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">00169</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator::strong_random_generator</a>(): impl(new impl_t) { }
-<a name="l00170"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">00170</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">strong_random_generator::~strong_random_generator</a>() { <span class="keyword">delete</span> impl; }
-<a name="l00171"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">00171</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">strong_random_generator::operator()</a>() {
-<a name="l00172"></a>00172 <span class="keywordflow">return</span> (*impl)(); }
-<a name="l00173"></a>00173
-<a name="l00175"></a>00175 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">strong_random_generator::min</a>
-<a name="l00176"></a>00176 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> min_value; }
-<a name="l00177"></a>00177 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">strong_random_generator::max</a>
-<a name="l00178"></a>00178 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> max_value; }
-<a name="l00180"></a>00180
-<a name="l00182"></a>00182 <span class="comment">// Returns a positive (unless told otherwise) integer between zero and</span>
-<a name="l00183"></a>00183 <span class="comment">// (1<<bits)-1, inclusive</span>
+<a name="l00102"></a>00102 <span class="comment">// The secure random generator</span>
+<a name="l00103"></a>00103
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="preprocessor">#ifdef _WIN32</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
+<a name="l00108"></a>00108 <span class="keyword">typedef</span> BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
+<a name="l00109"></a>00109 <span class="keyword">typedef</span> DWORD <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 impl_t(): dll(0), fn(0) {
+<a name="l00112"></a>00112 <span class="comment">// This should work under WinXP, Vista, and Win7. No guarantees about</span>
+<a name="l00113"></a>00113 <span class="comment">// future compatibility, but I doubt that Microsoft will get rid of it</span>
+<a name="l00114"></a>00114 <span class="comment">// (it's too useful), and I doubt that they'll change it now that it's</span>
+<a name="l00115"></a>00115 <span class="comment">// well-known (it would break too many programs). We could also use the</span>
+<a name="l00116"></a>00116 <span class="comment">// rand_s function in more recent versions of Visual C++, but that</span>
+<a name="l00117"></a>00117 <span class="comment">// causes compatibility problems with older versions of Windows.</span>
+<a name="l00118"></a>00118 dll=LoadLibraryA(<span class="stringliteral">"Advapi32.dll"</span>);
+<a name="l00119"></a>00119 <span class="keywordflow">if</span> (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll, <span class="stringliteral">"SystemFunction036"</span>));
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (fn == 0) {
+<a name="l00121"></a>00121 destroy();
+<a name="l00122"></a>00122 <span class="keywordflow">throw</span> no_strong_random();
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 ~impl_t() { destroy(); }
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>() {
+<a name="l00129"></a>00129 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> r=0;
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (!fn(&r, <span class="keyword">sizeof</span>(<a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>)))
+<a name="l00131"></a>00131 <span class="keywordflow">throw</span> no_strong_random(<span class="stringliteral">"RtlGenRandom failed"</span>);
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> r;
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keywordtype">void</span> destroy() { <span class="keywordflow">if</span> (dll) FreeLibrary(dll); }
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 HMODULE dll;
+<a name="l00138"></a>00138 RtlGenRandomFn fn;
+<a name="l00139"></a>00139 };
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 32; }
+<a name="l00142"></a>00142 <span class="preprocessor">#else</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
+<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 impl_t(): rng(<span class="stringliteral">"/dev/urandom"</span>, std::ios::binary) {
+<a name="l00147"></a>00147 <span class="comment">// This should be supported under most non-Windows systems. Note</span>
+<a name="l00148"></a>00148 <span class="comment">// that we're using /dev/urandom, not /dev/random -- /dev/random is</span>
+<a name="l00149"></a>00149 <span class="comment">// more secure, but it can be VERY slow.</span>
+<a name="l00150"></a>00150 <span class="keywordflow">if</span> (!rng) <span class="keywordflow">throw</span> exceptions::no_strong_random();
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>() {
+<a name="l00154"></a>00154 <span class="keywordtype">int</span> r=rng.get();
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (r==EOF) <span class="keywordflow">throw</span> exceptions::no_strong_random(<span class="stringliteral">"/dev/urandom "</span>
+<a name="l00156"></a>00156 <span class="stringliteral">"returned EOF"</span>);
+<a name="l00157"></a>00157 <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a><span class="keyword">></span>(r);
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159
+<a name="l00160"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">00160</a> std::ifstream rng;
+<a name="l00161"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">00161</a> };
+<a name="l00162"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">00162</a>
+<a name="l00163"></a>00163 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 8; }
+<a name="l00164"></a>00164 <span class="preprocessor">#endif</span>
+<a name="l00165"></a>00165 <span class="preprocessor"></span>
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">strong_random_generator::has_fixed_range</a> = <span class="keyword">true</span>;
+<a name="l00169"></a>00169 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">strong_random_generator::min_value</a> =
+<a name="l00170"></a>00170 (std::numeric_limits<impl_t::result_type>::min)();
+<a name="l00171"></a>00171 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">strong_random_generator::max_value</a> =
+<a name="l00172"></a>00172 (std::numeric_limits<impl_t::result_type>::max)();
+<a name="l00173"></a>00173 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator::strong_random_generator</a>(): impl(new impl_t) { }
+<a name="l00174"></a>00174 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">strong_random_generator::~strong_random_generator</a>() { <span class="keyword">delete</span> impl; }
+<a name="l00175"></a>00175 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">strong_random_generator::operator()</a>() {
+<a name="l00176"></a>00176 <span class="keywordflow">return</span> (*impl)(); }
+<a name="l00177"></a>00177
+<a name="l00179"></a>00179 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">strong_random_generator::min</a>
+<a name="l00180"></a>00180 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> min_value; }
+<a name="l00181"></a>00181 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">strong_random_generator::max</a>
+<a name="l00182"></a>00182 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> max_value; }
<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="keyword">namespace </span>core {
-<a name="l00206"></a>00206 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
-<a name="l00207"></a>00207 can_be_negative)
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 <span class="keywordflow">if</span> (bits<=0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 generator_t randomGenerator;
-<a name="l00212"></a>00212 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cBitsPerIteration=std::numeric_limits<generator_t::result_type>::digits;
+<a name="l00186"></a>00186 <span class="comment">// Returns a positive (unless told otherwise) integer between zero and</span>
+<a name="l00187"></a>00187 <span class="comment">// (1<<bits)-1, inclusive</span>
+<a name="l00188"></a>00188
+<a name="l00209"></a>00209 integer <a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
+<a name="l00210"></a>00210 can_be_negative)
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (bits<=0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
<a name="l00213"></a>00213
-<a name="l00214"></a>00214 <span class="comment">// Grab a set of random bits, of at least the specified size</span>
-<a name="l00215"></a>00215 <span class="keywordtype">size_t</span> iterations = (bits+cBitsPerIteration-1) / cBitsPerIteration;
-<a name="l00216"></a>00216 std::vector<generator_t::result_type> v;
-<a name="l00217"></a>00217 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<iterations; ++i) v.push_back(randomGenerator());
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <span class="keyword">const</span> <span class="keywordtype">char</span> *vptr=(<span class="keyword">const</span> <span class="keywordtype">char</span> *)&v[0], *vptr_end=vptr+(v.size() * <span class="keyword">sizeof</span>(generator_t::result_type));
-<a name="l00220"></a>00220 integer p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">from_binary</a>(std::string(vptr, vptr_end));
+<a name="l00214"></a>00214 generator_t randomGenerator;
+<a name="l00215"></a>00215 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cBitsPerIteration=std::numeric_limits<generator_t::result_type>::digits;
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217 <span class="comment">// Grab a set of random bits, of at least the specified size</span>
+<a name="l00218"></a>00218 <span class="keywordtype">size_t</span> iterations = (bits+cBitsPerIteration-1) / cBitsPerIteration;
+<a name="l00219"></a>00219 std::vector<generator_t::result_type> v;
+<a name="l00220"></a>00220 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<iterations; ++i) v.push_back(randomGenerator());
<a name="l00221"></a>00221
-<a name="l00222"></a>00222 <span class="comment">// Trim it to the proper length</span>
-<a name="l00223"></a>00223 <span class="keywordtype">size_t</span> index=(bits/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00224"></a>00224 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>))-1;
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (mask==0) { mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>; --index; }
-<a name="l00226"></a>00226 p._get_data()->digits[index] &= mask;
-<a name="l00227"></a>00227 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i=p._get_data()->digits+index+1,
-<a name="l00228"></a>00228 *ie=p._get_data()->digits+p._get_data()->mLength; i<ie; ++i) *i=0;
-<a name="l00229"></a>00229 p._get_data()->skipLeadingZeros();
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="keywordflow">if</span> (high_bit_on) <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(p, bits-1);
-<a name="l00232"></a>00232 <span class="keywordflow">if</span> (low_bit_on) <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(p, 0);
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (can_be_negative) p._set_negative(randomGenerator() & 0x01);
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="keywordflow">return</span> p;
-<a name="l00236"></a>00236 }
-<a name="l00237"></a>00237 } <span class="comment">// namespace core</span>
-<a name="l00238"></a>00238 } <span class="comment">// namespace xint</span>
-<a name="l00239"></a>00239 } <span class="comment">// namespace boost</span>
+<a name="l00222"></a>00222 <span class="keyword">const</span> <span class="keywordtype">char</span> *vptr=(<span class="keyword">const</span> <span class="keywordtype">char</span> *)&v[0], *vptr_end=vptr+(v.size() * <span class="keyword">sizeof</span>(generator_t::result_type));
+<a name="l00223"></a>00223 integer p=<a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">from_binary</a>(std::string(vptr, vptr_end));
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 <span class="comment">// Trim it to the proper length</span>
+<a name="l00226"></a>00226 <span class="keywordtype">size_t</span> index=(bits/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00227"></a>00227 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>))-1;
+<a name="l00228"></a>00228 <span class="keywordflow">if</span> (mask==0) { mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>; --index; }
+<a name="l00229"></a>00229 p._get_digits()[index] &= mask;
+<a name="l00230"></a>00230 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i=p._get_digits()+index+1,
+<a name="l00231"></a>00231 *ie=p._get_digits()+p._get_length(); i<ie; ++i) *i=0;
+<a name="l00232"></a>00232 p._cleanup();
+<a name="l00233"></a>00233
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (high_bit_on) <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(p, bits-1);
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (low_bit_on) <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(p, 0);
+<a name="l00236"></a>00236 <span class="keywordflow">if</span> (can_be_negative) p._set_negative(randomGenerator() & 0x01);
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> p;
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 } <span class="comment">// namespace xint</span>
+<a name="l00242"></a>00242 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/random_8dox.html
==============================================================================
--- sandbox/xint/doc/random_8dox.html (original)
+++ sandbox/xint/doc/random_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/random.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Copied: sandbox/xint/doc/random_8hpp.html (from r61200, /sandbox/xint/doc/random_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/random_8cpp.html (original)
+++ sandbox/xint/doc/random_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: random.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: random.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,17 +26,24 @@
</div>
</div>
<div class="contents">
-<h1>random.cpp File Reference</h1>
-<p>Contains the definitions for the random number functions.
+<h1>random.hpp File Reference</h1>
+<p>Declares items relating to random numbers.
<a href="#_details">More...</a></p>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Support class for the random generator code. More...<br/></td></tr>
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -44,27 +51,20 @@
<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
-<br/></td></tr>
-</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">boost::xint::detail::set_random_generator</a> (base_random_generator *obj)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail::get_random</a> ()</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint::set_random_generator</a> (T *gen)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the random number functions. </p>
+<p>Declares items relating to random numbers. </p>
-<p>Definition in file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+<p>Definition in file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/random_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/random_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: random.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>random.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_RANDOM_HPP</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_RANDOM_HPP</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <boost/random/uniform_int.hpp></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <boost/random/variate_generator.hpp></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>boost {
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>xint {
+<a name="l00027"></a>00027
+<a name="l00035"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html">00035</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">strong_random_generator</a> {
+<a name="l00036"></a>00036 <span class="keyword">public</span>:
+<a name="l00037"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">00037</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a>();
+<a name="l00040"></a>00040 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a>();
+<a name="l00041"></a>00041 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>();
+<a name="l00042"></a>00042
+<a name="l00043"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">00043</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">has_fixed_range</a>;
+<a name="l00044"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">00044</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">min_value</a>;
+<a name="l00045"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">00045</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">max_value</a>;
+<a name="l00046"></a>00046 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">min</a>() <span class="keyword">const</span>;
+<a name="l00047"></a>00047 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">max</a>() <span class="keyword">const</span>;
+<a name="l00048"></a>00048 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">entropy</a>() <span class="keyword">const</span>;
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keyword">private</span>:
+<a name="l00051"></a>00051 <span class="keyword">struct </span>impl_t;
+<a name="l00052"></a>00052 impl_t *impl;
+<a name="l00053"></a>00053 };
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keyword">namespace </span>detail {
+<a name="l00057"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">00057</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html" title="The base class for random_generator.">base_random_generator</a> {
+<a name="l00058"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">00058</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a>;
+<a name="l00059"></a>00059 <span class="keyword">virtual</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0;
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061
+<a name="l00063"></a>00063 <span class="keyword">template</span> <<span class="keyword">class</span> T>
+<a name="l00064"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html">00064</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>: <span class="keyword">public</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html" title="The base class for random_generator.">base_random_generator</a> {
+<a name="l00065"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">00065</a> <span class="keyword">typedef</span> boost::uniform_int<result_type> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a>;
+<a name="l00066"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">00066</a> <span class="keyword">typedef</span> boost::variate_generator<T&, dist_t> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a>;
+<a name="l00067"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">00067</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">random_generator</a>(T *g): <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">genobj</a>(g), <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a>(*g,
+<a name="l00068"></a>00068 <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a>((std::numeric_limits<<a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a>>::min)(),
+<a name="l00069"></a>00069 (std::numeric_limits<<a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a>>::max)())) { }
+<a name="l00070"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">00070</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a>(); }
+<a name="l00071"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">00071</a> std::auto_ptr<T> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">genobj</a>;
+<a name="l00072"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">00072</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a>;
+<a name="l00073"></a>00073 };
+<a name="l00074"></a>00074
+<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">set_random_generator</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html" title="The base class for random_generator.">base_random_generator</a> *obj);
+<a name="l00077"></a>00077
+<a name="l00082"></a>00082 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">get_random</a>();
+<a name="l00083"></a>00083 } <span class="comment">// namespace detail</span>
+<a name="l00084"></a>00084
+<a name="l00086"></a>00086 <span class="comment">// Template function definitions</span>
+<a name="l00087"></a>00087
+<a name="l00101"></a>00101 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00102"></a><a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">00102</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen) {
+<a name="l00103"></a>00103 <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a> *obj=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a>(gen);
+<a name="l00104"></a>00104 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">detail::set_random_generator</a>(obj);
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 } <span class="comment">// namespace xint</span>
+<a name="l00108"></a>00108 } <span class="comment">// namespace boost</span>
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_RANDOM_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Modified: sandbox/xint/doc/rationale.html
==============================================================================
--- sandbox/xint/doc/rationale.html (original)
+++ sandbox/xint/doc/rationale.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<ul>
<li><a class="el" href="r__interface.html">Why did you do <em>X</em> in the interface?</a></li>
<li><a class="el" href="r__interface__design__only.html">Then why didn't you follow those exactly?</a></li>
-<li><a class="el" href="r__core.html">What's with the <code>core</code> and <code>blockable</code> namespaces?</a></li>
+<li><a class="el" href="r__core.html">What's with the <code>nothrow_integer</code> type?</a></li>
</ul>
<h2><a class="anchor" id="scow">
Copy-on-Write</a></h2>
@@ -38,10 +38,10 @@
<li><a class="el" href="r__shared__ptr.html">Why are you using a roll-your-own system instead of <code>boost::shared_ptr</code> for the copy-on-write stuff?</a></li>
</ul>
<h2><a class="anchor" id="snan">
-Not-a-Number and Exception Blocking</a></h2>
+Not-a-Number and The nothrow_integer Type</a></h2>
<ul>
<li><a class="el" href="r__nan.html">Why have a Not-a-Number value?</a></li>
-<li><a class="el" href="r__exception__blocking.html">Why have an exception-blocking system at all? Exceptions are standard C++!</a></li>
+<li><a class="el" href="r__exception__blocking.html">Why have a nothrow_integer type at all?</a></li>
<li><a class="el" href="r__negzero.html">Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers?</a></li>
</ul>
<h2><a class="anchor" id="srandom">
@@ -52,7 +52,7 @@
<li><a class="el" href="r__default__necessary.html">Okay, then why not make the developer provide one?</a> </li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/rationale_8dox.html
==============================================================================
--- sandbox/xint/doc/rationale_8dox.html (original)
+++ sandbox/xint/doc/rationale_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/rationale.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/roots_8cpp.html
==============================================================================
--- sandbox/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/doc/roots_8cpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,27 +36,22 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All the types and functions of the library are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint::sqrt</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for functions related to roots of a number. </p>
<p>Definition in file <a class="el" href="roots_8cpp_source.html">roots.cpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/roots_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/roots_8cpp_source.html (original)
+++ sandbox/xint/doc/roots_8cpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -41,32 +41,30 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>core {
-<a name="l00023"></a>00023
-<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00035"></a>00035 <span class="keywordflow">if</span> (n.sign() < 0) <span class="keywordflow">throw</span> cannot_represent(<span class="stringliteral">"library cannot represent "</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"imaginary values (tried to take sqrt of negative number)"</span>);
-<a name="l00037"></a>00037 <span class="keywordflow">if</span> (n.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="comment">// Initial guess is half the length of n, in bits</span>
-<a name="l00040"></a>00040 integer guess;
-<a name="l00041"></a>00041 <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(guess, <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(n)/2);
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="comment">// Now refine it until we're as close as integers can get</span>
-<a name="l00044"></a>00044 <span class="keywordflow">while</span> (1) {
-<a name="l00045"></a>00045 integer guess2=(guess + (n/guess)) >> 1;
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (guess == guess2) <span class="keywordflow">break</span>;
-<a name="l00047"></a>00047 guess=guess2;
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> guess;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 } <span class="comment">// namespace core</span>
-<a name="l00054"></a>00054 } <span class="comment">// namespace xint</span>
-<a name="l00055"></a>00055 } <span class="comment">// namespace boost</span>
+<a name="l00022"></a>00022
+<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint.html#a0825d8d9d4644df8d9b6922f5b0d7064">sqrt</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00034"></a>00034 <span class="keywordflow">if</span> (n.sign() < 0) <span class="keywordflow">throw</span> exceptions::cannot_represent(<span class="stringliteral">"library cannot "</span>
+<a name="l00035"></a>00035 <span class="stringliteral">"represent imaginary values (tried to take sqrt of negative number)"</span>);
+<a name="l00036"></a>00036 <span class="keywordflow">if</span> (n.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="comment">// Initial guess is half the length of n, in bits</span>
+<a name="l00039"></a>00039 integer guess;
+<a name="l00040"></a>00040 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(guess, <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(n)/2);
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="comment">// Now refine it until we're as close as integers can get</span>
+<a name="l00043"></a>00043 <span class="keywordflow">while</span> (1) {
+<a name="l00044"></a>00044 integer guess2=(guess + (n/guess)) >> 1;
+<a name="l00045"></a>00045 <span class="keywordflow">if</span> (guess == guess2) <span class="keywordflow">break</span>;
+<a name="l00046"></a>00046 guess=guess2;
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> guess;
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 } <span class="comment">// namespace xint</span>
+<a name="l00053"></a>00053 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/securemode.html
==============================================================================
--- sandbox/xint/doc/securemode.html (original)
+++ sandbox/xint/doc/securemode.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -28,7 +28,7 @@
<p>To enable it, define the preprocessor symbol <code>XINT_SECURE</code> when compiling the library. You don't need to define it when using the library, only when compiling it.</p>
<p>To see whether your copy was compiled with secure-mode enabled, use the xint::opt_secure_mode function. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/securemode_8dox.html
==============================================================================
--- sandbox/xint/doc/securemode_8dox.html (original)
+++ sandbox/xint/doc/securemode_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/securemode.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -31,7 +31,7 @@
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -53,7 +53,7 @@
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00080">80</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00057">57</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a9694aa7d11ac533581d530037f23fd0a"></a><!-- doxytag: member="boost::xint::detail::base_random_generator::result_type" ref="a9694aa7d11ac533581d530037f23fd0a" args="" -->
<div class="memitem">
@@ -66,7 +66,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00081">81</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00058">58</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -91,10 +91,10 @@
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="random_8hpp_source.html">random.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,33 +27,13 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::data_t Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(const data_t &addend)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(size_t digits, bool copydigits=false)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a>(const data_t *c, size_t extraDigits=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a91d6951498c6df25133e987c7d347c17">data_t</a>(data_t *c)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a84c1163a2b0a698a74125b4d21f99d12">data_t</a>(boost::uintmax_t n, bool)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">quickset</a>(digit_t d1, digit_t d2=0, digit_t d3=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(size_t newdigits)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(size_t byBits)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(size_t byBits)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(const data_t &subtrahend)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(digit_t *p, size_t count)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+<h1>boost::xint::detail::data_t< digit_count > Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t< digit_count ></a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: boost::xint::detail::data_t Struct Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::detail::data_t< digit_count > Struct Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -29,566 +29,99 @@
</div>
</div>
<div class="contents">
-<h1>boost::xint::detail::data_t Struct Reference</h1><!-- doxytag: class="boost::xint::detail::data_t" -->
-<p>Holds the internal details of an xint::integer.
+<h1>boost::xint::detail::data_t< digit_count > Struct Template Reference</h1><!-- doxytag: class="boost::xint::detail::data_t" -->
+<p>Holds the magnitude digits of an integer.
<a href="#_details">More...</a></p>
<p>List of all members.</p>
<table border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="2"><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">QuickDigits</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds information determining how many quick-digits to use. More...<br/></td></tr>
-<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial1=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial2=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial3=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a91d6951498c6df25133e987c7d347c17">data_t</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> *c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a84c1163a2b0a698a74125b4d21f99d12">data_t</a> (boost::uintmax_t n, bool)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a> (size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, bool copydigits=false)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a> (size_t newdigits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a> (const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> *c, size_t extraDigits=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, size_t count)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">quickset</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a> (const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> &addend)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a> (const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> &subtrahend)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a> (size_t byBits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a> (size_t byBits)</td></tr>
<tr><td colspan="2"><h2>Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> [<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>]</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a> [digit_count]</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Holds the internal details of an xint::integer. </p>
-<p>The data for an integer is stored in a separate struct so it can be shared between different copies of an identical number. </p>
+<h3>template<int digit_count = 1><br/>
+ struct boost::xint::detail::data_t< digit_count ></h3>
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00037">37</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a37dee31093efc13f9ad64171fd9c373a"></a><!-- doxytag: member="boost::xint::detail::data_t::data_t" ref="a37dee31093efc13f9ad64171fd9c373a" args="(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">boost::xint::detail::data_t::data_t </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
- <td class="paramname"> <em>initial1</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
- <td class="paramname"> <em>initial2</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
- <td class="paramname"> <em>initial3</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00027">27</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a91d6951498c6df25133e987c7d347c17"></a><!-- doxytag: member="boost::xint::detail::data_t::data_t" ref="a91d6951498c6df25133e987c7d347c17" args="(data_t *c)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">boost::xint::detail::data_t::data_t </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td>
- <td class="paramname"> <em>c</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00039">39</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a84c1163a2b0a698a74125b4d21f99d12"></a><!-- doxytag: member="boost::xint::detail::data_t::data_t" ref="a84c1163a2b0a698a74125b4d21f99d12" args="(boost::uintmax_t n, bool)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">boost::xint::detail::data_t::data_t </td>
- <td>(</td>
- <td class="paramtype">boost::uintmax_t </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00064">64</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ac723d73bc8845e6df77f3c439128b939"></a><!-- doxytag: member="boost::xint::detail::data_t::add" ref="ac723d73bc8845e6df77f3c439128b939" args="(const data_t &addend)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::add </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> & </td>
- <td class="paramname"> <em>addend</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00229">229</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a05165b7f45dea3e2459739d856d78288"></a><!-- doxytag: member="boost::xint::detail::data_t::alloc" ref="a05165b7f45dea3e2459739d856d78288" args="(size_t digits, bool copydigits=false)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::alloc </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>digits</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>copydigits</em> = <code>false</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00116">116</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae5e0fb03bd1a93e834bbbcbb11dcf845"></a><!-- doxytag: member="boost::xint::detail::data_t::attach" ref="ae5e0fb03bd1a93e834bbbcbb11dcf845" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::attach </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00072">72</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8fd5f934c3ad8c1f9d38bb38ac89cfcd"></a><!-- doxytag: member="boost::xint::detail::data_t::copy" ref="a8fd5f934c3ad8c1f9d38bb38ac89cfcd" args="(const data_t *c, size_t extraDigits=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::copy </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>extraDigits</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00184">184</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aca622bc945c157c65cf5042b70eabd83"></a><!-- doxytag: member="boost::xint::detail::data_t::detach" ref="aca622bc945c157c65cf5042b70eabd83" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::detail::data_t::detach </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00073">73</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad082d802e78dab68eb7409e09386e974"></a><!-- doxytag: member="boost::xint::detail::data_t::invert" ref="ad082d802e78dab68eb7409e09386e974" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::invert </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00201">201</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1207c8b514f44886ae98f6632b9726a1"></a><!-- doxytag: member="boost::xint::detail::data_t::negate" ref="a1207c8b514f44886ae98f6632b9726a1" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::negate </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
+<p>Holds the magnitude digits of an integer. </p>
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00222">222</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a231dab01a05e0c7f64e9c592537ddb14"></a><!-- doxytag: member="boost::xint::detail::data_t::quickset" ref="a231dab01a05e0c7f64e9c592537ddb14" args="(digit_t d1, digit_t d2=0, digit_t d3=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::quickset </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
- <td class="paramname"> <em>d1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
- <td class="paramname"> <em>d2</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
- <td class="paramname"> <em>d3</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00105">105</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3bdd8e8ef7c5b8bc888b96725aac9dfe"></a><!-- doxytag: member="boost::xint::detail::data_t::realloc" ref="a3bdd8e8ef7c5b8bc888b96725aac9dfe" args="(size_t newdigits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::realloc </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>newdigits</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00075">75</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaa43f067c7f1a7772276cf9a57ab653c"></a><!-- doxytag: member="boost::xint::detail::data_t::shift_left" ref="aaa43f067c7f1a7772276cf9a57ab653c" args="(size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::shift_left </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>byBits</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00283">283</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad28012e618ecab56b69ceac7585d1741"></a><!-- doxytag: member="boost::xint::detail::data_t::shift_right" ref="ad28012e618ecab56b69ceac7585d1741" args="(size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::shift_right </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>byBits</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00311">311</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a284e2618d908796987c624311a42625d"></a><!-- doxytag: member="boost::xint::detail::data_t::skipLeadingZeros" ref="a284e2618d908796987c624311a42625d" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::skipLeadingZeros </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Call this after every manipulation of a <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> object that could possibly leave leading zeros in the integer. </p>
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00098">98</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a138ee1d91bfa37d248c43ef66371e590"></a><!-- doxytag: member="boost::xint::detail::data_t::subtract" ref="a138ee1d91bfa37d248c43ef66371e590" args="(const data_t &subtrahend)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::subtract </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> & </td>
- <td class="paramname"> <em>subtrahend</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00256">256</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abc03de358802a588b87fe666dd8f7c43"></a><!-- doxytag: member="boost::xint::detail::data_t::zero" ref="abc03de358802a588b87fe666dd8f7c43" args="(digit_t *p, size_t count)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::detail::data_t::zero </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> * </td>
- <td class="paramname"> <em>p</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>count</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00196">196</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00069">69</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
<hr/><h2>Member Data Documentation</h2>
-<a class="anchor" id="a0e65a16488bd7a9d0b1c2a42cc258da3"></a><!-- doxytag: member="boost::xint::detail::data_t::digits" ref="a0e65a16488bd7a9d0b1c2a42cc258da3" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>* <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">boost::xint::detail::data_t::digits</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="note"><dt><b>Note:</b></dt><dd>The digits are stored lowest-digit-first. </dd></dl>
-
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00053">53</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a02411914c8a9d59e3521b04367352ea5"></a><!-- doxytag: member="boost::xint::detail::data_t::mAllocated" ref="a02411914c8a9d59e3521b04367352ea5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">boost::xint::detail::data_t::mAllocated</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00052">52</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6ee92e12f6b7de91f7ad85fcd481bd74"></a><!-- doxytag: member="boost::xint::detail::data_t::mCopies" ref="a6ee92e12f6b7de91f7ad85fcd481bd74" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">boost::xint::detail::data_t::mCopies</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00060">60</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abd6528e0c4f7674b4421cc7f1e2aba09"></a><!-- doxytag: member="boost::xint::detail::data_t::mIsNegative" ref="abd6528e0c4f7674b4421cc7f1e2aba09" args="" -->
+<a class="anchor" id="a2c4e92bbb54af690e1a53e2c02196e52"></a><!-- doxytag: member="boost::xint::detail::data_t::copies" ref="a2c4e92bbb54af690e1a53e2c02196e52" args="" -->
<div class="memitem">
<div class="memproto">
+<div class="memtemplate">
+template<int digit_count = 1> </div>
<table class="memname">
<tr>
- <td class="memname">bool <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">boost::xint::detail::data_t::mIsNegative</a></td>
+ <td class="memname">size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a>< digit_count >::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a2c4e92bbb54af690e1a53e2c02196e52">copies</a></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00061">61</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00070">70</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a3b494184a00a17108f8bb80d8f07a3a4"></a><!-- doxytag: member="boost::xint::detail::data_t::mLength" ref="a3b494184a00a17108f8bb80d8f07a3a4" args="" -->
+<a class="anchor" id="acf4a8986615aba673c134a4f56c3bf53"></a><!-- doxytag: member="boost::xint::detail::data_t::length" ref="acf4a8986615aba673c134a4f56c3bf53" args="" -->
<div class="memitem">
<div class="memproto">
+<div class="memtemplate">
+template<int digit_count = 1> </div>
<table class="memname">
<tr>
- <td class="memname">size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">boost::xint::detail::data_t::mLength</a></td>
+ <td class="memname">size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a>< digit_count >::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#acf4a8986615aba673c134a4f56c3bf53">length</a></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00052">52</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00070">70</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="af91f399a0533e8cdf46ac021616e2500"></a><!-- doxytag: member="boost::xint::detail::data_t::mQuickDigits" ref="af91f399a0533e8cdf46ac021616e2500" args="[QuickDigits::count]" -->
+<a class="anchor" id="aacce731ac73c34cab97ed3a86b16056a"></a><!-- doxytag: member="boost::xint::detail::data_t::magnitude" ref="aacce731ac73c34cab97ed3a86b16056a" args="[digit_count]" -->
<div class="memitem">
<div class="memproto">
+<div class="memtemplate">
+template<int digit_count = 1> </div>
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">boost::xint::detail::data_t::mQuickDigits</a>[<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>]</td>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a>< digit_count >::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aacce731ac73c34cab97ed3a86b16056a">magnitude</a>[digit_count]</td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00054">54</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00071">71</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a8867fdad2325f390790c1188e6f71219"></a><!-- doxytag: member="boost::xint::detail::data_t::mStorage" ref="a8867fdad2325f390790c1188e6f71219" args="" -->
+<a class="anchor" id="ac861550f6fa834587a7fafc24e006d22"></a><!-- doxytag: member="boost::xint::detail::data_t::max_length" ref="ac861550f6fa834587a7fafc24e006d22" args="" -->
<div class="memitem">
<div class="memproto">
+<div class="memtemplate">
+template<int digit_count = 1> </div>
<table class="memname">
<tr>
- <td class="memname">std::vector<<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>> <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">boost::xint::detail::data_t::mStorage</a></td>
+ <td class="memname">size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a>< digit_count >::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac861550f6fa834587a7fafc24e006d22">max_length</a></td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00057">57</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00070">70</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
</div>
</div>
-<hr/>The documentation for this struct was generated from the following files:<ul>
-<li><a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a></li>
-<li><a class="el" href="data__t_8cpp_source.html">data_t.cpp</a></li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -33,7 +33,7 @@
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue Apr 13 00:48:56 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,16 +36,16 @@
<p>List of all members.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a> = std::numeric_limits<unsigned int>::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a> = std::numeric_limits<unsigned int>::digits</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a> = (2*<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a>/<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">We want at least enough <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html" title="Holds information determining how many quick-digits to use.">QuickDigits</a> to hold two standard int types. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> = 3</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The library's code is written to depend on this value, don't change it. <br/></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The library's code is written to depend on this value, don't lower it. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">count</a> = (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a> < <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> ? <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a>)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Holds information determining how many quick-digits to use. </p>
-<p>Smaller numbers are represented in a small array of digits that are part of the <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a> structure itself, so that no additional memory allocation is needed for them. The contents of this structure determine how many of them the library uses. </p>
+<p>Smaller numbers are represented in a small array of digits that are part of the <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a9db58339e358806eae3dbcad5e31cb83">data_t</a> structure itself, so that no additional memory allocation is needed for them. The contents of this structure determine how many of them the library uses. </p>
<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00045">45</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
<hr/><h2>Member Data Documentation</h2>
@@ -69,7 +69,7 @@
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">const size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">boost::xint::detail::data_t::QuickDigits::intbits</a> = std::numeric_limits<unsigned int>::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a><code> [static]</code></td>
+ <td class="memname">const size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">boost::xint::detail::data_t::QuickDigits::intbits</a> = std::numeric_limits<unsigned int>::digits<code> [static]</code></td>
</tr>
</table>
</div>
@@ -90,7 +90,7 @@
</div>
<div class="memdoc">
-<p>The library's code is written to depend on this value, don't change it. </p>
+<p>The library's code is written to depend on this value, don't lower it. </p>
<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00048">48</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
@@ -117,7 +117,7 @@
<li><a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue Apr 13 00:48:56 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -36,7 +36,7 @@
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">random_generator</a>(T *g)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -64,7 +64,7 @@
<p>Support class for the random generator code. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00087">87</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00064">64</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="ae206a1943d1e8d15efdf443f59cf1106"></a><!-- doxytag: member="boost::xint::detail::random_generator::dist_t" ref="ae206a1943d1e8d15efdf443f59cf1106" args="" -->
<div class="memitem">
@@ -79,7 +79,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00088">88</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00065">65</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -96,7 +96,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00089">89</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00066">66</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -119,7 +119,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00090">90</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00067">67</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -143,7 +143,7 @@
<p>Implements <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>.</p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00093">93</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00070">70</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -161,7 +161,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00095">95</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00072">72</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
@@ -178,15 +178,15 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00094">94</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00071">71</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="random_8hpp_source.html">random.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -37,12 +37,12 @@
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>An empty struct, used in <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. </p>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00077">77</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00069">69</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 03:20:10 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/testing.html
==============================================================================
--- sandbox/xint/doc/testing.html (original)
+++ sandbox/xint/doc/testing.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,7 +27,7 @@
<h1><a class="anchor" id="testing">The Self-Testing Program </a></h1><p>The library has a self-testing program that you can build and run to confirm that it is working properly. You can find the source code for it in the <code>test</code> subdirectory under the main <code>xint</code> directory. All of the major functions are thoroughly exercised, and many of the minor ones as well.</p>
<p>The source code for the testing program also demonstrates how to use many of the library's functions. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/testing_8dox.html
==============================================================================
--- sandbox/xint/doc/testing_8dox.html (original)
+++ sandbox/xint/doc/testing_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/testing.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/threadsafe.html
==============================================================================
--- sandbox/xint/doc/threadsafe.html (original)
+++ sandbox/xint/doc/threadsafe.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -26,9 +26,10 @@
<h1><a class="anchor" id="threadsafe">Thread-Safe Operation </a></h1><p>This library, by default, can only safely be used in one thread at a time. If you need thread-safe operation, you must compile it with the thread-safe option enabled (see below), and you must ensure that only one thread ever accesses a particular integer at a time. The library cannot automatically provide this protection without an unacceptably severe speed penalty.</p>
<p>To enable thread-safe operations, define the preprocessor symbol <code>XINT_THREADSAFE</code> when compiling the library. You don't need to define it when using the library, only when compiling it.</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>When the library is compiled with the thread-safe option, all programs that link to it must also link to the Boost.Thread library.</dd></dl>
<p>To see whether your copy was compiled with thread-safe operation enabled, use the xint::opt_thread_safe function. </p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/threadsafe_8dox.html
==============================================================================
--- sandbox/xint/doc/threadsafe_8dox.html (original)
+++ sandbox/xint/doc/threadsafe_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/threadsafe.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/todo.html
==============================================================================
--- sandbox/xint/doc/todo.html (original)
+++ sandbox/xint/doc/todo.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -22,9 +22,14 @@
<div class="contents">
-<h1><a class="anchor" id="todo">Todo List </a></h1><p><a class="anchor" id="_todo000002"></a> </p>
+<h1><a class="anchor" id="todo">Todo List </a></h1><p><a class="anchor" id="_todo000003"></a> </p>
<dl>
-<dt>Member <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n) </dt>
+<dt>Namespace <a class="el" href="namespaceboost.html">boost</a> </dt>
+<dd>Move to <a class="el" href="random_8cpp.html" title="Contains the definitions for the random number functions.">random.cpp</a>? </dd>
+</dl>
+<p><a class="anchor" id="_todo000002"></a> </p>
+<dl>
+<dt>Member <a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint::sqr</a> (const integer &n) </dt>
<dd>Rewrite this to eliminate the inefficient addOverflow. </dd>
</dl>
<p><a class="anchor" id="_todo000001"></a> </p>
@@ -33,7 +38,7 @@
<dd>the xint::to_string function could be made more efficient by using only doubledigit_t-sized pieces of the integer at a time, and dividing the whole thing by the total of the divisions done to get the digits. Same with the xint::from_string function. </dd>
</dl>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint_8hpp.html (original)
+++ sandbox/xint/doc/xint_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,351 +27,18 @@
</div>
<div class="contents">
<h1>xint.hpp File Reference</h1>
-<p>The main header file for the XInt library.
+<p>This is the include-everything header.
<a href="#_details">More...</a></p>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="2"><h2>Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">boost::xint::detail::token</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An empty struct, used in <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Support class for the random generator code. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for the integer classes. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The core integer class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The blockable integer class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">boost::xint::invalid_modulus</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">boost::xint::divide_by_zero</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">boost::xint::cannot_represent</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1too__big.html">boost::xint::too_big</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1not__a__number.html">boost::xint::not_a_number</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">boost::xint::no_strong_random</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1overflow__error.html">boost::xint::overflow_error</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
-<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
-<br/></td></tr>
-</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
-<br/></td></tr>
-</p>
-<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uintmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">boost::xint::detail::doubledigit_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uint_t<br class="typebreak"/>
-< std::numeric_limits<br class="typebreak"/>
-< doubledigit_t >::digits/2 ><br class="typebreak"/>
-::fast </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">boost::xint::detail::digit_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::auto_ptr<br class="typebreak"/>
-< detail::token > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">boost::xint::token</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Used for the exception-blocker. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef boost::function< bool()> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint::callback_t</a></td></tr>
-<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">boost::xint::detail::set_random_generator</a> (base_random_generator *obj)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail::get_random</a> ()</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core::abs</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core::negate</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core::add</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core::subtract</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core::multiply</a> (const integer &n, const integer &by)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core::pow</a> (const integer &n, const integer &e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core::pow2</a> (size_t e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core::factorial</a> (size_t n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core::to</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an xint::integer to a built-in integer type. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core::from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core::to_binary</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an integer, lowest byte first. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core::from_binary</a> (const std::string &str)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core::getbit</a> (const integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core::setbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core::clearbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core::shift</a> (const integer &n, int byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core::shift_left</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core::shift_right</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core::mod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core::sqrmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core::invmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core::is_prime</a> (const integer &n, callback_t callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core::operator!</a> (const integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core::operator<</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core::operator></a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core::operator==</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core::operator+</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core::operator-</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a017539f78cba665d5cbb6b6ba00e1d42">boost::xint::core::operator+</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af4587327ba62268fe3267ca09bd8f4a2">boost::xint::core::operator-</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core::operator*</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core::operator/</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core::operator%</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core::operator&</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core::operator|</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core::operator^</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core::log2</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core::gcd</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core::lcm</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable::abs</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable::negate</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable::add</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable::subtract</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable::multiply</a> (const integer &n, const integer &by)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable::sqr</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable::pow</a> (const integer &n, const integer &e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable::pow2</a> (size_t e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable::factorial</a> (size_t n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable::sqrt</a> (const integer &n)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">boost::xint::blockable::to</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable::from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable::to_binary</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable::from_binary</a> (const std::string &str)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable::getbit</a> (const integer &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable::setbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable::clearbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable::shift</a> (const integer &n, int byBits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable::shift_left</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable::shift_right</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable::mod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable::sqrmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable::invmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable::is_prime</a> (const integer &n, callback_t callback)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable::operator!</a> (const integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable::operator<</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable::operator></a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable::operator==</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable::operator+</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable::operator-</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a43c166834c838c500713c571ff49ae7c">boost::xint::blockable::operator+</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable::operator-</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable::operator*</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable::operator/</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable::operator%</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable::operator&</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable::operator|</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable::operator^</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable::log2</a> (const integer &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable::gcd</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable::lcm</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Exception-blocking and -allowing functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6b736a9df3b9afabec548528235f28b6"></a> See the <a class="el" href="exceptions.html">exception-blocking page</a> for details on these functions and how to use them. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">boost::xint::exceptions_allowed</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Query whether exceptions are currently allowed or blocked. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">token </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint::block_exceptions</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporarily prevent the library from throwing blockable exceptions. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">token </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint::allow_exceptions</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Temprarily counteract an <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a> token to allow all exceptions. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint::set_random_generator</a> (T *gen)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint::opt_secure_mode</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379">boost::xint::opt_thread_safe</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">boost::xint::blockable::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">boost::xint::blockable::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
-<tr><td colspan="2"><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">boost::xint::detail::nan_text</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the text representation of the Not-a-Number value. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const callback_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">boost::xint::no_callback</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint::autobase</a> = (std::numeric_limits<size_t>::max)()</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Some constants used by the library.</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpe1f42a3ea000e0468230fb7abe73e7b1"></a> </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">boost::xint::detail::bits_per_digit</a> = std::numeric_limits<digit_t>::digits</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">boost::xint::detail::digit_hibit</a> = (digit_t(1) << (bits_per_digit-1))</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const doubledigit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">boost::xint::detail::doubledigit_hibit</a> = (doubledigit_t(1) << (bits_per_digit*2-1))</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const doubledigit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">boost::xint::detail::digit_overflowbit</a> = (doubledigit_t(1) << bits_per_digit)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">boost::xint::detail::digit_mask</a> = digit_t(digit_overflowbit-1)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The main header file for the XInt library. </p>
-<p>This is the only header that programs using the library should need to include. </p>
+<p>This is the include-everything header. </p>
<p>Definition in file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint_8hpp_source.html (original)
+++ sandbox/xint/doc/xint_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -37,683 +37,18 @@
<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
-<a name="l00021"></a>00021 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_H</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_H</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <string></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <limits></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <memory></span> <span class="comment">// for auto_ptr</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <cstddef></span> <span class="comment">// for size_t</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <iostream></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <stdexcept></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <boost/integer.hpp></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <boost/cstdint.hpp></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <boost/function.hpp></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include <boost/type_traits.hpp></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include <boost/static_assert.hpp></span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include <boost/random/uniform_int.hpp></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include <boost/random/variate_generator.hpp></span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>boost {
-<a name="l00040"></a>00040 <span class="keyword">namespace </span>xint {
-<a name="l00041"></a>00041
-<a name="l00043"></a>00043 <span class="comment">// The boring-but-necessary preliminary stuff</span>
-<a name="l00044"></a>00044
-<a name="l00046"></a>00046 <span class="keyword">namespace </span>detail {
-<a name="l00052"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">00052</a> <span class="keyword">typedef</span> boost::uintmax_t <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>;
-<a name="l00053"></a>00053
-<a name="l00059"></a>00059 <span class="keyword">typedef</span> boost::uint_t<std::numeric_limits<doubledigit_t>::digits / 2>::fast
-<a name="l00060"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">00060</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>;
-<a name="l00061"></a>00061
-<a name="l00064"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">00064</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> = std::numeric_limits<digit_t>::digits;
-<a name="l00065"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">00065</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">digit_hibit</a> = (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>-1));
-<a name="l00066"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">00066</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a> = (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>*2-1));
-<a name="l00067"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">00067</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> = (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00068"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">00068</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a> = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>-1);
-<a name="l00070"></a>00070
-<a name="l00072"></a>00072 <span class="keyword">const</span> <span class="keyword">extern</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">nan_text</a>;
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>;
-<a name="l00075"></a>00075
-<a name="l00077"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1token.html">00077</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> { };
-<a name="l00078"></a>00078
-<a name="l00080"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">00080</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html" title="The base class for random_generator.">base_random_generator</a> {
-<a name="l00081"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">00081</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a>;
-<a name="l00082"></a>00082 <span class="keyword">virtual</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0;
-<a name="l00083"></a>00083 };
-<a name="l00084"></a>00084
-<a name="l00086"></a>00086 <span class="keyword">template</span> <<span class="keyword">class</span> T>
-<a name="l00087"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html">00087</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>: <span class="keyword">public</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html" title="The base class for random_generator.">base_random_generator</a> {
-<a name="l00088"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">00088</a> <span class="keyword">typedef</span> boost::uniform_int<result_type> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a>;
-<a name="l00089"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">00089</a> <span class="keyword">typedef</span> boost::variate_generator<T&, dist_t> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a>;
-<a name="l00090"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">00090</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">random_generator</a>(T *g): <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">genobj</a>(g), <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a>(*g,
-<a name="l00091"></a>00091 <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a>((std::numeric_limits<<a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a>>::min)(),
-<a name="l00092"></a>00092 (std::numeric_limits<<a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a>>::max)())) { }
-<a name="l00093"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">00093</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a>(); }
-<a name="l00094"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">00094</a> std::auto_ptr<T> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">genobj</a>;
-<a name="l00095"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">00095</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a>;
-<a name="l00096"></a>00096 };
-<a name="l00097"></a>00097
-<a name="l00099"></a>00099 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">set_random_generator</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html" title="The base class for random_generator.">base_random_generator</a> *obj);
-<a name="l00100"></a>00100
-<a name="l00105"></a>00105 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">get_random</a>();
-<a name="l00106"></a>00106 } <span class="comment">// namespace detail</span>
-<a name="l00107"></a>00107
-<a name="l00109"></a><a class="code" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">00109</a> <span class="keyword">typedef</span> std::auto_ptr<detail::token> <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a>;
-<a name="l00110"></a>00110
-<a name="l00114"></a><a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">00114</a> <span class="keyword">typedef</span> boost::function<bool ()> <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>;
-<a name="l00115"></a>00115
-<a name="l00119"></a><a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">00119</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>;
-<a name="l00120"></a>00120
-<a name="l00124"></a><a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">00124</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>=(std::numeric_limits<size_t>::max)();
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="keyword">namespace </span>blockable {
-<a name="l00127"></a>00127 <span class="keyword">class </span>integer;
-<a name="l00128"></a>00128 } <span class="comment">// namespace blockable</span>
-<a name="l00129"></a>00129
-<a name="l00136"></a>00136 <span class="keyword">namespace </span>core {
-<a name="l00137"></a>00137
-<a name="l00139"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html">00139</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a> {
-<a name="l00140"></a>00140 <span class="keyword">public</span>:
-<a name="l00141"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">00141</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>(): data(0) { }
-<a name="l00142"></a>00142 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>();
-<a name="l00143"></a>00143
-<a name="l00145"></a>00145
-<a name="l00146"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">00146</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }
-<a name="l00147"></a>00147 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span>;
-<a name="l00148"></a>00148 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>) <span class="keyword">const</span>;
-<a name="l00149"></a>00149 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() <span class="keyword">const</span>;
-<a name="l00150"></a>00150 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() <span class="keyword">const</span>;
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keyword">protected</span>:
-<a name="l00154"></a>00154 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *new_data);
-<a name="l00155"></a>00155 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& copy);
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keyword">private</span>:
-<a name="l00158"></a>00158 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *data;
-<a name="l00159"></a>00159 };
-<a name="l00160"></a>00160
-<a name="l00173"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html">00173</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>: <span class="keyword">public</span> core::<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a> {
-<a name="l00174"></a>00174 <span class="keyword">public</span>:
-<a name="l00175"></a>00175
-<a name="l00178"></a>00178 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>();
-<a name="l00179"></a>00179 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
-<a name="l00180"></a>00180 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>& b);
-<a name="l00181"></a>00181 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
-<a name="l00182"></a>00182 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00183"></a>00183 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
-<a name="l00184"></a>00184 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
-<a name="l00185"></a>00185 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00186"></a>00186 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
-<a name="l00187"></a>00187 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
-<a name="l00189"></a>00189
-<a name="l00198"></a>00198 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c);
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
-<a name="l00201"></a>00201 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
-<a name="l00202"></a>00202 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
-<a name="l00203"></a>00203 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
-<a name="l00204"></a>00204 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a>();
-<a name="l00207"></a>00207 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a>();
-<a name="l00208"></a>00208 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a>(<span class="keywordtype">int</span>);
-<a name="l00209"></a>00209 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a>(<span class="keywordtype">int</span>);
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00212"></a>00212 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00213"></a>00213 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00214"></a>00214 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>) <span class="keyword">const</span>;
-<a name="l00215"></a>00215 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
-<a name="l00216"></a>00216 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
-<a name="l00217"></a>00217 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
-<a name="l00219"></a>00219
-<a name="l00227"></a>00227 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a>();
-<a name="l00228"></a>00228 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>();
-<a name="l00230"></a>00230
-<a name="l00233"></a>00233 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e" title="Tests the lowest bit of *this to determine oddness.">odd</a>() <span class="keyword">const</span>;
-<a name="l00234"></a>00234 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3" title="Tests the lowest bit of *this to determine evenness.">even</a>() <span class="keyword">const</span>;
-<a name="l00235"></a>00235 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() <span class="keyword">const</span>;
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43" title="Tells you roughly how large an integer is.">hex_digits</a>() <span class="keyword">const</span>;
-<a name="l00239"></a>00239
-<a name="l00245"></a>00245 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keywordtype">bool</span> negative);
-<a name="l00246"></a>00246 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 <span class="keyword">protected</span>:
-<a name="l00250"></a>00250 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0);
-<a name="l00251"></a>00251 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c);
-<a name="l00252"></a>00252 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t n);
-<a name="l00253"></a>00253 };
-<a name="l00254"></a>00254
-<a name="l00257"></a>00257 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00258"></a>00258 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00259"></a>00259 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& addend);
-<a name="l00260"></a>00260 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& subtrahend);
-<a name="l00261"></a>00261 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& multiplicand);
-<a name="l00262"></a>00262 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& divisor);
-<a name="l00263"></a>00263 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&
-<a name="l00264"></a>00264 divisor);
-<a name="l00266"></a>00266
-<a name="l00269"></a>00269 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00270"></a>00270 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30" title="Calculate the value of ne">pow</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& exponent);
-<a name="l00271"></a>00271 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> exponent);
-<a name="l00272"></a>00272 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n);
-<a name="l00273"></a>00273 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00275"></a>00275
-<a name="l00278"></a>00278 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00279"></a>00279 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
-<a name="l00280"></a>00280 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
-<a name="l00281"></a>00281 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00282"></a>00282 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string& s);
-<a name="l00284"></a>00284
-<a name="l00287"></a>00287 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00288"></a>00288 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00289"></a>00289 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00290"></a>00290 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
-<a name="l00291"></a>00291 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
-<a name="l00292"></a>00292 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00293"></a>00293 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a> (<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00294"></a>00294 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00295"></a>00295 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits);
-<a name="l00296"></a>00296 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
-<a name="l00297"></a>00297 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
-<a name="l00299"></a>00299
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modBy);
-<a name="l00307"></a>00307 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& by, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modulus);
-<a name="l00308"></a>00308 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modulus);
-<a name="l00309"></a>00309 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& exponent, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&
-<a name="l00310"></a>00310 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
-<a name="l00311"></a>00311 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modulus);
-<a name="l00313"></a>00313
-<a name="l00316"></a>00316 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
-<a name="l00317"></a>00317 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
-<a name="l00319"></a>00319
-<a name="l00322"></a>00322 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
-<a name="l00323"></a>00323 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
-<a name="l00325"></a>00325
-<a name="l00330"></a>00330
-<a name="l00331"></a>00331 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">operator!</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1);
-<a name="l00332"></a>00332 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">operator<</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00333"></a>00333 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator></a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00334"></a>00334 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00335"></a>00335 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00336"></a>00336 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">operator==</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00337"></a>00337 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& a);
-<a name="l00340"></a>00340 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& a);
-<a name="l00341"></a>00341 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00342"></a>00342 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00343"></a>00343 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">operator*</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00344"></a>00344 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">operator/</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00345"></a>00345 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">operator%</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00346"></a>00346 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">operator&</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00347"></a>00347 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">operator|</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00348"></a>00348 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">operator^</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
-<a name="l00350"></a>00350
-<a name="l00353"></a>00353 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
-<a name="l00354"></a>00354 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
-<a name="l00355"></a>00355 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num2);
-<a name="l00356"></a>00356 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num2);
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359 } <span class="comment">// namespace core</span>
-<a name="l00360"></a>00360
-<a name="l00370"></a>00370 <span class="keyword">namespace </span>blockable {
-<a name="l00371"></a>00371
-<a name="l00373"></a>00373 <span class="comment">// The blockable integer class</span>
-<a name="l00374"></a>00374
-<a name="l00387"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html">00387</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>: <span class="keyword">public</span> core::base_integer {
-<a name="l00388"></a>00388 <span class="keyword">public</span>:
-<a name="l00389"></a>00389
-<a name="l00392"></a>00392 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>();
-<a name="l00393"></a>00393 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
-<a name="l00394"></a>00394 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>& b);
-<a name="l00395"></a>00395 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
-<a name="l00396"></a>00396 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00397"></a>00397 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
-<a name="l00398"></a>00398 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
-<a name="l00399"></a>00399 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00400"></a>00400 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
-<a name="l00401"></a>00401 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
-<a name="l00403"></a>00403
-<a name="l00412"></a>00412 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &c);
-<a name="l00413"></a>00413
-<a name="l00414"></a>00414 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
-<a name="l00415"></a>00415 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
-<a name="l00416"></a>00416 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
-<a name="l00417"></a>00417 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
-<a name="l00418"></a>00418 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
-<a name="l00419"></a>00419
-<a name="l00420"></a>00420 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">operator++</a>();
-<a name="l00421"></a>00421 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">operator--</a>();
-<a name="l00422"></a>00422 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">operator++</a>(<span class="keywordtype">int</span>);
-<a name="l00423"></a>00423 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">operator--</a>(<span class="keywordtype">int</span>);
-<a name="l00424"></a>00424
-<a name="l00425"></a>00425 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00426"></a>00426 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00427"></a>00427 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00428"></a>00428 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>) <span class="keyword">const</span>;
-<a name="l00429"></a>00429 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
-<a name="l00430"></a>00430 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
-<a name="l00431"></a>00431 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
-<a name="l00433"></a>00433
-<a name="l00436"></a>00436 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">odd</a>() <span class="keyword">const</span>;
-<a name="l00437"></a>00437 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">even</a>() <span class="keyword">const</span>;
-<a name="l00438"></a>00438 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">sign</a>() <span class="keyword">const</span>;
-<a name="l00439"></a>00439 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>() <span class="keyword">const</span>;
-<a name="l00440"></a>00440
-<a name="l00441"></a>00441 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">hex_digits</a>() <span class="keyword">const</span>;
-<a name="l00443"></a>00443
-<a name="l00451"></a>00451 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">zero</a>();
-<a name="l00452"></a>00452 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>();
-<a name="l00453"></a>00453 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">nan</a>();
-<a name="l00455"></a>00455
-<a name="l00461"></a>00461 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">_set_negative</a>(<span class="keywordtype">bool</span> negative);
-<a name="l00462"></a>00462 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a>();
-<a name="l00464"></a>00464
-<a name="l00465"></a>00465 <span class="keyword">private</span>:
-<a name="l00466"></a>00466 <span class="keywordtype">void</span> _init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0);
-<a name="l00467"></a>00467 <span class="keywordtype">void</span> _init(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &c);
-<a name="l00468"></a>00468 <span class="keywordtype">void</span> _init(boost::uintmax_t n);
-<a name="l00469"></a>00469 };
-<a name="l00470"></a>00470
-<a name="l00473"></a>00473 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00474"></a>00474 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00475"></a>00475 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& addend);
-<a name="l00476"></a>00476 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& subtrahend);
-<a name="l00477"></a>00477 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& multiplicand);
-<a name="l00478"></a>00478 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& divisor);
-<a name="l00479"></a>00479 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>&
-<a name="l00480"></a>00480 divisor);
-<a name="l00482"></a>00482
-<a name="l00484"></a>00484
-<a name="l00487"></a>00487 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00488"></a>00488 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& exponent);
-<a name="l00489"></a>00489 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">pow2</a>(<span class="keywordtype">size_t</span> exponent);
-<a name="l00490"></a>00490 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">factorial</a>(<span class="keywordtype">size_t</span> n);
-<a name="l00491"></a>00491 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00493"></a>00493
-<a name="l00495"></a>00495
-<a name="l00498"></a>00498 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00499"></a>00499 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
-<a name="l00500"></a>00500 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
-<a name="l00501"></a>00501 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00502"></a>00502 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">from_binary</a>(<span class="keyword">const</span> std::string& s);
-<a name="l00504"></a>00504
-<a name="l00506"></a>00506
-<a name="l00509"></a>00509 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00510"></a>00510 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00511"></a>00511 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00512"></a>00512 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
-<a name="l00513"></a>00513 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
-<a name="l00514"></a>00514 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00515"></a>00515 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a> (<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00516"></a>00516 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00517"></a>00517 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits);
-<a name="l00518"></a>00518 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
-<a name="l00519"></a>00519 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
-<a name="l00521"></a>00521
-<a name="l00523"></a>00523
-<a name="l00529"></a>00529
-<a name="l00530"></a>00530 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modBy);
-<a name="l00531"></a>00531 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">mulmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& by, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modulus);
-<a name="l00532"></a>00532 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modulus);
-<a name="l00533"></a>00533 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& exponent, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>&
-<a name="l00534"></a>00534 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
-<a name="l00535"></a>00535 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modulus);
-<a name="l00537"></a>00537
-<a name="l00539"></a>00539
-<a name="l00542"></a>00542 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
-<a name="l00543"></a>00543 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
-<a name="l00545"></a>00545
-<a name="l00547"></a>00547
-<a name="l00550"></a>00550 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
-<a name="l00551"></a>00551 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
-<a name="l00553"></a>00553
-<a name="l00555"></a>00555
-<a name="l00560"></a>00560
-<a name="l00561"></a>00561 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1);
-<a name="l00562"></a>00562 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">operator<</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00563"></a>00563 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">operator></a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00564"></a>00564 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00565"></a>00565 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00566"></a>00566 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">operator==</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00567"></a>00567 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00568"></a>00568
-<a name="l00569"></a>00569 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& a);
-<a name="l00570"></a>00570 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& a);
-<a name="l00571"></a>00571 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00572"></a>00572 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00573"></a>00573 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">operator*</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00574"></a>00574 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">operator/</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00575"></a>00575 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">operator%</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00576"></a>00576 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">operator&</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00577"></a>00577 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">operator|</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00578"></a>00578 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">operator^</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
-<a name="l00580"></a>00580
-<a name="l00582"></a>00582
-<a name="l00585"></a>00585 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
-<a name="l00586"></a>00586 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
-<a name="l00587"></a>00587 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num2);
-<a name="l00588"></a>00588 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num2);
-<a name="l00590"></a>00590
-<a name="l00591"></a>00591 } <span class="comment">// namespace blockable</span>
-<a name="l00592"></a>00592
-<a name="l00594"></a>00594
-<a name="l00602"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html">00602</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">strong_random_generator</a> {
-<a name="l00603"></a>00603 <span class="keyword">public</span>:
-<a name="l00604"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">00604</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
-<a name="l00605"></a>00605
-<a name="l00606"></a>00606 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a>();
-<a name="l00607"></a>00607 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a>();
-<a name="l00608"></a>00608 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>();
-<a name="l00609"></a>00609
-<a name="l00610"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">00610</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">has_fixed_range</a>;
-<a name="l00611"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">00611</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">min_value</a>;
-<a name="l00612"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">00612</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">max_value</a>;
-<a name="l00613"></a>00613 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">min</a>() <span class="keyword">const</span>;
-<a name="l00614"></a>00614 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">max</a>() <span class="keyword">const</span>;
-<a name="l00615"></a>00615 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">entropy</a>() <span class="keyword">const</span>;
-<a name="l00616"></a>00616
-<a name="l00617"></a>00617 <span class="keyword">private</span>:
-<a name="l00618"></a>00618 <span class="keyword">struct </span>impl_t;
-<a name="l00619"></a>00619 impl_t *impl;
-<a name="l00620"></a>00620 };
-<a name="l00621"></a>00621
-<a name="l00623"></a>00623
-<a name="l00629"></a>00629
-<a name="l00630"></a>00630 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>();
-<a name="l00631"></a>00631 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">block_exceptions</a>();
-<a name="l00632"></a>00632 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
-<a name="l00634"></a>00634
-<a name="l00637"></a>00637 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen);
-<a name="l00639"></a>00639
-<a name="l00642"></a>00642 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd" title="Tells whether the library was compiled with Secure Mode enabled.">opt_secure_mode</a>();
-<a name="l00643"></a>00643 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379" title="Tells whether the library was compiled with the Thread Safe Operation option enabled...">opt_thread_safe</a>();
-<a name="l00645"></a>00645
-<a name="l00647"></a>00647 <span class="comment">// Exception classes</span>
-<a name="l00648"></a>00648
-<a name="l00651"></a>00651
-<a name="l00655"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html">00655</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">invalid_base</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00656"></a>00656 <span class="keyword">public</span>:
-<a name="l00657"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">00657</a> <a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">invalid_base</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid base"</span>): invalid_argument(what)
-<a name="l00658"></a>00658 { }
-<a name="l00659"></a>00659 };
-<a name="l00660"></a>00660
-<a name="l00665"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html">00665</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">invalid_digit</a>: <span class="keyword">public</span> std::range_error {
-<a name="l00666"></a>00666 <span class="keyword">public</span>:
-<a name="l00667"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">00667</a> <a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">invalid_digit</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid digit"</span>): range_error(what)
-<a name="l00668"></a>00668 { }
-<a name="l00669"></a>00669 };
-<a name="l00670"></a>00670
-<a name="l00675"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html">00675</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">invalid_modulus</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00676"></a>00676 <span class="keyword">public</span>:
-<a name="l00677"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">00677</a> <a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">invalid_modulus</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid modulus"</span>):
-<a name="l00678"></a>00678 invalid_argument(what) { }
-<a name="l00679"></a>00679 };
-<a name="l00680"></a>00680
-<a name="l00685"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html">00685</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">divide_by_zero</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00686"></a>00686 <span class="keyword">public</span>:
-<a name="l00687"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">00687</a> <a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">divide_by_zero</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"divide by zero error"</span>):
-<a name="l00688"></a>00688 invalid_argument(what) { }
-<a name="l00689"></a>00689 };
-<a name="l00690"></a>00690
-<a name="l00695"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html">00695</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">cannot_represent</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00696"></a>00696 <span class="keyword">public</span>:
-<a name="l00697"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">00697</a> <a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">cannot_represent</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00698"></a>00698 <span class="stringliteral">"cannot represent the requested value"</span>): invalid_argument(what) { }
-<a name="l00699"></a>00699 };
-<a name="l00700"></a>00700
-<a name="l00705"></a><a class="code" href="classboost_1_1xint_1_1too__big.html">00705</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>: <span class="keyword">public</span> std::range_error {
-<a name="l00706"></a>00706 <span class="keyword">public</span>:
-<a name="l00707"></a><a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">00707</a> <a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">too_big</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00708"></a>00708 <span class="stringliteral">"value out of range for requested conversion"</span>): range_error(what) { }
-<a name="l00709"></a>00709 };
-<a name="l00710"></a>00710
-<a name="l00722"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html">00722</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>: <span class="keyword">public</span> std::runtime_error {
-<a name="l00723"></a>00723 <span class="keyword">public</span>:
-<a name="l00724"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">00724</a> <a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">not_a_number</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"attempted to use a Not-a-Number"</span>):
-<a name="l00725"></a>00725 runtime_error(what) { }
-<a name="l00726"></a>00726 };
-<a name="l00727"></a>00727
-<a name="l00740"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html">00740</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1no__strong__random.html" title="Exception class.">no_strong_random</a>: <span class="keyword">public</span> std::runtime_error {
-<a name="l00741"></a>00741 <span class="keyword">public</span>:
-<a name="l00742"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">00742</a> <a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">no_strong_random</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00743"></a>00743 <span class="stringliteral">"system does not have a strong random generator"</span>):
-<a name="l00744"></a>00744 runtime_error(what) { }
-<a name="l00745"></a>00745 };
-<a name="l00746"></a>00746
-<a name="l00754"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html">00754</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a> {
-<a name="l00755"></a>00755 <span class="keyword">public</span>:
-<a name="l00756"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">00756</a> <a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">overflow_error</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00757"></a>00757 <span class="stringliteral">"overflow error: can't obtain enough memory to represent the requested number"</span>):
-<a name="l00758"></a>00758 std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>(what) { }
-<a name="l00759"></a>00759 };
-<a name="l00761"></a>00761
-<a name="l00763"></a>00763 <span class="comment">// Template function definitions</span>
-<a name="l00764"></a>00764
-<a name="l00778"></a>00778 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00779"></a><a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">00779</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen) {
-<a name="l00780"></a>00780 <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a> *obj=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a>(gen);
-<a name="l00781"></a>00781 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">detail::set_random_generator</a>(obj);
-<a name="l00782"></a>00782 }
-<a name="l00783"></a>00783
-<a name="l00784"></a>00784 <span class="keyword">namespace </span>core {
-<a name="l00785"></a>00785
-<a name="l00798"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">00798</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00799"></a>00799 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
-<a name="l00800"></a>00800 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
-<a name="l00801"></a>00801 {
-<a name="l00802"></a>00802 <span class="keywordflow">if</span> (n >= 0) {
-<a name="l00803"></a>00803 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
-<a name="l00804"></a>00804 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
-<a name="l00805"></a>00805 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(n));
-<a name="l00806"></a>00806 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n == (std::numeric_limits<T>::min)()) {
-<a name="l00807"></a>00807 <span class="comment">// Have to treat the minimum number carefully, because -n is not</span>
-<a name="l00808"></a>00808 <span class="comment">// what you'd think it is.</span>
-<a name="l00809"></a>00809 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(-(n+1)));
-<a name="l00810"></a>00810 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keyword">true</span>);
-<a name="l00811"></a>00811 --(*this);
-<a name="l00812"></a>00812 } <span class="keywordflow">else</span> {
-<a name="l00813"></a>00813 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(-n));
-<a name="l00814"></a>00814 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keyword">true</span>);
-<a name="l00815"></a>00815 }
-<a name="l00816"></a>00816 }
-<a name="l00817"></a>00817
-<a name="l00830"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">00830</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00831"></a>00831 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
-<a name="l00832"></a>00832 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
-<a name="l00833"></a>00833 {
-<a name="l00834"></a>00834 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
-<a name="l00835"></a>00835 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
-<a name="l00836"></a>00836 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(n));
-<a name="l00837"></a>00837 }
-<a name="l00838"></a>00838
-<a name="l00849"></a>00849 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00850"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">00850</a> T <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) {
-<a name="l00851"></a>00851 <span class="keywordflow">if</span> (n < (std::numeric_limits<T>::min)()
-<a name="l00852"></a>00852 || n > (std::numeric_limits<T>::max)())
-<a name="l00853"></a>00853 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>(<span class="stringliteral">"value out of range for requested conversion"</span>);
-<a name="l00854"></a>00854
-<a name="l00855"></a>00855 T rval=0;
-<a name="l00856"></a>00856 <span class="keywordtype">size_t</span> len=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>();
-<a name="l00857"></a>00857 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<len; ++x)
-<a name="l00858"></a>00858 rval=static_cast<T>((rval * <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">detail::digit_overflowbit</a>)
-<a name="l00859"></a>00859 + n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(len-x-1));
-<a name="l00860"></a>00860 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() < 0) rval *= -1;
-<a name="l00861"></a>00861 <span class="keywordflow">return</span> rval;
-<a name="l00862"></a>00862 }
-<a name="l00863"></a>00863
-<a name="l00866"></a>00866 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
-<a name="l00867"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">00867</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">operator<<</a>(std::basic_ostream<charT,
-<a name="l00868"></a>00868 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n)
-<a name="l00869"></a>00869 {
-<a name="l00870"></a>00870 <span class="keywordtype">int</span> base=((out.flags() & std::ios::hex) ? 16
-<a name="l00871"></a>00871 : (out.flags() & std::ios::oct) ? 8
-<a name="l00872"></a>00872 : 10);
-<a name="l00873"></a>00873 <span class="keywordtype">bool</span> upperCase=(out.flags() & std::ios::uppercase ? <span class="keyword">true</span> : <span class="keyword">false</span>);
-<a name="l00874"></a>00874
-<a name="l00875"></a>00875 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>();
-<a name="l00876"></a>00876 <span class="keywordflow">if</span> ((out.flags() & std::ios::showpos) && nsign >= 0) out << <span class="stringliteral">"+"</span>;
-<a name="l00877"></a>00877
-<a name="l00878"></a>00878 <span class="keywordflow">if</span> (out.flags() & std::ios::showbase) {
-<a name="l00879"></a>00879 <span class="keywordflow">if</span> (nsign < 0) out << <span class="stringliteral">"-"</span>;
-<a name="l00880"></a>00880
-<a name="l00881"></a>00881 <span class="keywordflow">if</span> (base==16 && upperCase) out << <span class="stringliteral">"0X"</span>;
-<a name="l00882"></a>00882 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==16) out << <span class="stringliteral">"0x"</span>;
-<a name="l00883"></a>00883 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==8) out << <span class="stringliteral">"0"</span>;
-<a name="l00884"></a>00884
-<a name="l00885"></a>00885 out << <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n), base, upperCase);
-<a name="l00886"></a>00886 } <span class="keywordflow">else</span> {
-<a name="l00887"></a>00887 out << <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(n, base, upperCase);
-<a name="l00888"></a>00888 }
-<a name="l00889"></a>00889 <span class="keywordflow">return</span> out;
-<a name="l00890"></a>00890 }
-<a name="l00891"></a>00891
-<a name="l00892"></a>00892 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
-<a name="l00893"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">00893</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">operator>></a>(std::basic_istream<charT,
-<a name="l00894"></a>00894 traits>& in, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n)
-<a name="l00895"></a>00895 {
-<a name="l00896"></a>00896 <span class="keywordtype">int</span> hex=(in.flags() & std::ios::hex) ? 1 : 0;
-<a name="l00897"></a>00897 <span class="keywordtype">int</span> dec=(in.flags() & std::ios::dec) ? 1 : 0;
-<a name="l00898"></a>00898 <span class="keywordtype">int</span> oct=(in.flags() & std::ios::oct) ? 1 : 0;
-<a name="l00899"></a>00899 <span class="keywordtype">int</span> count=hex+dec+oct;
-<a name="l00900"></a>00900
-<a name="l00901"></a>00901 <span class="keywordtype">size_t</span> base=<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>;
-<a name="l00902"></a>00902 <span class="keywordflow">if</span> (count==1) {
-<a name="l00903"></a>00903 <span class="keywordflow">if</span> (hex) base=16;
-<a name="l00904"></a>00904 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (oct) base=8;
-<a name="l00905"></a>00905 <span class="keywordflow">else</span> base=10;
-<a name="l00906"></a>00906 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count>1) base=10;
-<a name="l00907"></a>00907 <span class="comment">// else auto-base</span>
-<a name="l00908"></a>00908
-<a name="l00909"></a>00909 std::string s;
-<a name="l00910"></a>00910 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'+'</span>) {
-<a name="l00911"></a>00911 in.ignore();
-<a name="l00912"></a>00912 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'-'</span>) {
-<a name="l00913"></a>00913 in.ignore();
-<a name="l00914"></a>00914 s.push_back(<span class="charliteral">'-'</span>);
-<a name="l00915"></a>00915 }
-<a name="l00916"></a>00916
-<a name="l00917"></a>00917 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
-<a name="l00918"></a>00918 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'0'</span>) {
-<a name="l00919"></a>00919 in.ignore();
-<a name="l00920"></a>00920 <span class="keywordtype">int</span> c=in.peek();
-<a name="l00921"></a>00921 <span class="keywordflow">if</span> (c==<span class="charliteral">'x'</span> || c==<span class="charliteral">'X'</span>) {
-<a name="l00922"></a>00922 in.ignore();
-<a name="l00923"></a>00923 base=16;
-<a name="l00924"></a>00924 } <span class="keywordflow">else</span> base=8;
-<a name="l00925"></a>00925 } <span class="keywordflow">else</span> base=10;
-<a name="l00926"></a>00926 }
-<a name="l00927"></a>00927
-<a name="l00928"></a>00928 <span class="keywordflow">while</span> (in) {
-<a name="l00929"></a>00929 <span class="keywordtype">int</span> c=in.peek();
-<a name="l00930"></a>00930 <span class="keywordflow">if</span> ((base==8 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'7'</span>)) ||
-<a name="l00931"></a>00931 (base==10 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>)) ||
-<a name="l00932"></a>00932 (base==16 && ((c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>) || (c>=<span class="charliteral">'a'</span> && c<=<span class="charliteral">'f'</span>) ||
-<a name="l00933"></a>00933 (c>=<span class="charliteral">'A'</span> && c<=<span class="charliteral">'F'</span>))))
-<a name="l00934"></a>00934 {
-<a name="l00935"></a>00935 in.ignore();
-<a name="l00936"></a>00936 s.push_back(<span class="keywordtype">char</span>(c));
-<a name="l00937"></a>00937 } <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
-<a name="l00938"></a>00938 }
-<a name="l00939"></a>00939
-<a name="l00940"></a>00940 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> allow=<a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
-<a name="l00941"></a>00941 <span class="keywordflow">try</span> {
-<a name="l00942"></a>00942 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> testValue=<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(s, base);
-<a name="l00943"></a>00943 n=testValue;
-<a name="l00944"></a>00944 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00945"></a>00945 <span class="comment">// Catch invalid strings</span>
-<a name="l00946"></a>00946 in.setstate(std::ios::failbit);
-<a name="l00947"></a>00947 }
-<a name="l00948"></a>00948
-<a name="l00949"></a>00949 <span class="keywordflow">return</span> in;
-<a name="l00950"></a>00950 }
-<a name="l00952"></a>00952
-<a name="l00953"></a>00953 } <span class="comment">// namespace core</span>
-<a name="l00954"></a>00954
-<a name="l00955"></a>00955 <span class="keyword">namespace </span>blockable {
-<a name="l00956"></a>00956
-<a name="l00969"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a466b727de74ca896778f7bde6ae3fbf1">00969</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00970"></a>00970 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
-<a name="l00971"></a>00971 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
-<a name="l00972"></a>00972 {
-<a name="l00973"></a>00973 <span class="keywordflow">try</span> {
-<a name="l00974"></a>00974 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
-<a name="l00975"></a>00975 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l00976"></a>00976 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l00977"></a>00977 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
-<a name="l00978"></a>00978 }
-<a name="l00979"></a>00979 }
-<a name="l00980"></a>00980
-<a name="l00993"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">00993</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00994"></a>00994 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
-<a name="l00995"></a>00995 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
-<a name="l00996"></a>00996 {
-<a name="l00997"></a>00997 <span class="keywordflow">try</span> {
-<a name="l00998"></a>00998 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
-<a name="l00999"></a>00999 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l01000"></a>01000 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l01001"></a>01001 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
-<a name="l01002"></a>01002 }
-<a name="l01003"></a>01003 }
-<a name="l01004"></a>01004
-<a name="l01009"></a>01009 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l01010"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">01010</a> T <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) {
-<a name="l01011"></a>01011 <span class="keywordflow">try</span> {
-<a name="l01012"></a>01012 <span class="keywordflow">return</span> to<T>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
-<a name="l01013"></a>01013 } <span class="keywordflow">catch</span> (std::exception&) {
-<a name="l01014"></a>01014 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
-<a name="l01015"></a>01015 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
-<a name="l01016"></a>01016 }
-<a name="l01017"></a>01017 }
-<a name="l01018"></a>01018
-<a name="l01021"></a>01021 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
-<a name="l01022"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">01022</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">operator<<</a>(std::basic_ostream<charT,
-<a name="l01023"></a>01023 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n)
-<a name="l01024"></a>01024 {
-<a name="l01025"></a>01025 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
-<a name="l01026"></a>01026 out << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>;
-<a name="l01027"></a>01027 <span class="keywordflow">return</span> out;
-<a name="l01028"></a>01028 } <span class="keywordflow">else</span> {
-<a name="l01029"></a>01029 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">core::operator<<</a>(out, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
-<a name="l01030"></a>01030 }
-<a name="l01031"></a>01031 }
-<a name="l01032"></a>01032
-<a name="l01033"></a>01033 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
-<a name="l01034"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">01034</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">operator>></a>(std::basic_istream<charT,
-<a name="l01035"></a>01035 traits>& in, <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n)
-<a name="l01036"></a>01036 {
-<a name="l01037"></a>01037 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'#'</span>) {
-<a name="l01038"></a>01038 <span class="comment">// Must be either #NaN# or an error</span>
-<a name="l01039"></a>01039 <span class="keywordtype">char</span> buffer[6];
-<a name="l01040"></a>01040 std::streamsize size=in.readsome(buffer, 5);
-<a name="l01041"></a>01041 buffer[size]=0;
-<a name="l01042"></a>01042 std::string str(buffer);
-<a name="l01043"></a>01043
-<a name="l01044"></a>01044 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) n=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
-<a name="l01045"></a>01045 <span class="keywordflow">else</span> in.setstate(std::ios::failbit);
-<a name="l01046"></a>01046 } <span class="keywordflow">else</span> {
-<a name="l01047"></a>01047 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a> nn;
-<a name="l01048"></a>01048 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">core::operator>></a>(in, nn);
-<a name="l01049"></a>01049 <span class="keywordflow">if</span> (in) n=nn;
-<a name="l01050"></a>01050 }
-<a name="l01051"></a>01051
-<a name="l01052"></a>01052 <span class="keywordflow">return</span> in;
-<a name="l01053"></a>01053 }
-<a name="l01055"></a>01055
-<a name="l01056"></a>01056 } <span class="comment">// namespace blockable</span>
-<a name="l01057"></a>01057
-<a name="l01058"></a>01058 <span class="keyword">namespace </span>test = core;
-<a name="l01059"></a>01059
-<a name="l01060"></a>01060 } <span class="comment">// namespace xint</span>
-<a name="l01061"></a>01061 } <span class="comment">// namespace boost</span>
-<a name="l01062"></a>01062
-<a name="l01063"></a>01063 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_H</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_HPP</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_HPP</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="integer_8hpp.html" title="Declares the core integer type.">integer.hpp</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="nothrow__integer_8hpp.html" title="Declares the xint::nothrow_integer class.">nothrow_integer.hpp</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="random_8hpp.html" title="Declares items relating to random numbers.">random.hpp</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="exceptions_8hpp.html" title="The exception namespace.">exceptions.hpp</a>"</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_HPP</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:57 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint__data__t_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint__data__t_8hpp.html (original)
+++ sandbox/xint/doc/xint__data__t_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -34,9 +34,7 @@
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the internal details of an xint::integer. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds information determining how many quick-digits to use. More...<br/></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the magnitude digits of an integer. More...<br/></td></tr>
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -49,14 +47,22 @@
<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">boost::xint::detail::allocate</a> (size_t max_digits, size_t initial_length)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a1883fadafa2eeb3e70dfd9032f35bbdd">boost::xint::detail::reallocate</a> (data_t *olddata, size_t newsize)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ae9e118dede42bef1f6e1dce0b3147193">boost::xint::detail::duplicate</a> (data_t *olddata, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">data_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a132c876c4d22cd65fe3ff8cf0d79cab5">boost::xint::detail::duplicate</a> (data_t *olddata, data_t *data_to_copy, size_t extra)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a44089260e9472ac378d3e2ed739e7e08">boost::xint::detail::deallocate</a> (data_t *data)</td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#afab2617e6ea96f6baaf3b6c08157adf6">boost::xint::detail::minimum_magnitude_digits</a> = 1</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Internal details of an xint::integer. </p>
-<p>This file contains the declaration for the xint data structure. It should only be used by the library itself. </p>
+<p>This file contains the declaration for the data_t structure and the internal allocation functions for it. It should only be used by the library itself. </p>
<p>Definition in file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:18 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint__data__t_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint__data__t_8hpp_source.html (original)
+++ sandbox/xint/doc/xint__data__t_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -37,75 +37,38 @@
<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
-<a name="l00021"></a>00021 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_DATA_T_H</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_DATA_T_H</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#if !defined(XINT_SECURE)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor"> #include <vector></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>boost {
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>xint {
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>detail {
-<a name="l00031"></a>00031
-<a name="l00037"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html">00037</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> {
-<a name="l00045"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">00045</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html" title="Holds information determining how many quick-digits to use.">QuickDigits</a> {
-<a name="l00046"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">00046</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a>=std::numeric_limits<unsigned int>::digits;
-<a name="l00047"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">00047</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae" title="We want at least enough QuickDigits to hold two standard int types.">suggested</a>=(2*<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a>/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00048"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">00048</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb" title="The library&#39;s code is written to depend on this value, don&#39;t change it.">minimum</a>=3;
-<a name="l00049"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">00049</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">count</a>=(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae" title="We want at least enough QuickDigits to hold two standard int types.">suggested</a> < <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb" title="The library&#39;s code is written to depend on this value, don&#39;t change it.">minimum</a> ? <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb" title="The library&#39;s code is written to depend o
n this value, don&#39;t change it.">minimum</a> : <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae" title="We want at least enough QuickDigits to hold two standard int types.">suggested</a>);
-<a name="l00050"></a>00050 };
+<a name="l00022"></a>00022 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_DATA_T_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_DATA_T_H</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#if !defined(XINT_SECURE)</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor"> #include <vector></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#endif</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>boost {
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>xint {
+<a name="l00031"></a>00031 <span class="keyword">namespace </span>detail {
+<a name="l00032"></a>00032
+<a name="l00033"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html#afab2617e6ea96f6baaf3b6c08157adf6">00033</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#afab2617e6ea96f6baaf3b6c08157adf6">minimum_magnitude_digits</a>=1;
+<a name="l00034"></a>00034
+<a name="l00040"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html">00040</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> {
+<a name="l00041"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af6047dff158ec443f2f73d012710d4cd">00041</a> <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a75fbdec9c81fcd83302e479ed2cae3c0">copies</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a081b825b5fb98a03909fa3280e658c8c">length</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af6047dff158ec443f2f73d012710d4cd">max_length</a>;
+<a name="l00042"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bd03fa762c6ee4224682bacfe2138d0">00042</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bd03fa762c6ee4224682bacfe2138d0">magnitude</a>[<a class="code" href="namespaceboost_1_1xint_1_1detail.html#afab2617e6ea96f6baaf3b6c08157adf6">minimum_magnitude_digits</a>];
+<a name="l00043"></a>00043 };
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a092b8b90955e65e858dfbdd1cc35b960">allocate</a>(<span class="keywordtype">size_t</span> max_digits, <span class="keywordtype">size_t</span> initial_length=
+<a name="l00046"></a>00046 (std::numeric_limits<size_t>::max)());
+<a name="l00047"></a>00047 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a1883fadafa2eeb3e70dfd9032f35bbdd">reallocate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *olddata, <span class="keywordtype">size_t</span> newsize);
+<a name="l00048"></a>00048 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ae9e118dede42bef1f6e1dce0b3147193">duplicate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *olddata, <span class="keywordtype">size_t</span> extra=0);
+<a name="l00049"></a>00049 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ae9e118dede42bef1f6e1dce0b3147193">duplicate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *olddata, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *data_to_copy, <span class="keywordtype">size_t</span> extra=0);
+<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a44089260e9472ac378d3e2ed739e7e08">deallocate</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the magnitude digits of an integer.">data_t</a> *data);
<a name="l00051"></a>00051
-<a name="l00052"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">00052</a> <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>;
-<a name="l00053"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">00053</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00054"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">00054</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>[<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>];
+<a name="l00052"></a>00052 } <span class="comment">// namespace detail</span>
+<a name="l00053"></a>00053 } <span class="comment">// namespace xint</span>
+<a name="l00054"></a>00054 } <span class="comment">// namespace boost</span>
<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <span class="preprocessor"> #if !defined(XINT_SECURE)</span>
-<a name="l00057"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">00057</a> <span class="preprocessor"></span> std::vector<digit_t> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>;
-<a name="l00058"></a>00058 <span class="preprocessor"> #endif</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>
-<a name="l00060"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">00060</a> <span class="keywordtype">int</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>;
-<a name="l00061"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">00061</a> <span class="keywordtype">bool</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">public</span>:
-<a name="l00064"></a>00064 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial1=0, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial2=0, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial3=0);
-<a name="l00065"></a>00065 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c);
-<a name="l00066"></a>00066 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(boost::uintmax_t n, <span class="keywordtype">bool</span>);
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="preprocessor"> #if defined(XINT_SECURE)</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span> ~<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>();
-<a name="l00070"></a>00070 <span class="preprocessor"> #endif</span>
-<a name="l00071"></a>00071 <span class="preprocessor"></span>
-<a name="l00072"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">00072</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>() { ++<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>; }
-<a name="l00073"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">00073</a> <span class="keywordtype">bool</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>() { <span class="keywordflow">return</span> (--<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==0); }
-<a name="l00074"></a>00074 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(<span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <span class="keywordtype">bool</span> copydigits=<span class="keyword">false</span>);
-<a name="l00075"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">00075</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<span class="keywordtype">size_t</span> newdigits) { <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(newdigits, <span class="keyword">true</span>); }
-<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c, <span class="keywordtype">size_t</span> extraDigits=0);
-<a name="l00078"></a>00078 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, <span class="keywordtype">size_t</span> count);
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">quickset</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2=0, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3=0);
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a>();
-<a name="l00083"></a>00083 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>();
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="comment">// These primitives ignore the signs of the parameters, and their results</span>
-<a name="l00086"></a>00086 <span class="comment">// are calculated in place.</span>
-<a name="l00087"></a>00087 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& addend);
-<a name="l00088"></a>00088 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& subtrahend);
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="comment">// These are also calculated in place, for maximum speed.</span>
-<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(<span class="keywordtype">size_t</span> byBits);
-<a name="l00092"></a>00092 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(<span class="keywordtype">size_t</span> byBits);
-<a name="l00093"></a>00093 };
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 } <span class="comment">// namespace detail</span>
-<a name="l00096"></a>00096 } <span class="comment">// namespace xint</span>
-<a name="l00097"></a>00097 } <span class="comment">// namespace boost</span>
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_DATA_T_H</span>
+<a name="l00056"></a>00056 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_DATA_T_H</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:18 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint__monty_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint__monty_8hpp.html (original)
+++ sandbox/xint/doc/xint__monty_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -67,7 +67,7 @@
<p>Definition in file <a class="el" href="xint__monty_8hpp_source.html">xint_monty.hpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:18 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint__monty_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint__monty_8hpp_source.html (original)
+++ sandbox/xint/doc/xint__monty_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -58,7 +58,7 @@
<a name="l00042"></a>00042
<a name="l00043"></a>00043 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MONTY_H</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:18 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint__test_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint__test_8hpp.html (original)
+++ sandbox/xint/doc/xint__test_8hpp.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -57,7 +57,7 @@
<p>Definition in file <a class="el" href="xint__test_8hpp_source.html">xint_test.hpp</a>.</p>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:18 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/doc/xint__test_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint__test_8hpp_source.html (original)
+++ sandbox/xint/doc/xint__test_8hpp_source.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -57,7 +57,7 @@
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_TEST_H</span>
</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Apr 14 22:09:18 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Added: sandbox/xint/doc/zero.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/zero.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: Zero and "Negative Zero"</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li class="current">Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="index.html">The Extended Integer (XInt) Library</a>
+ </div>
+</div>
+<div class="contents">
+
+
+<h1><a class="anchor" id="zero">Zero and "Negative Zero" </a></h1><p>The mathematical concept of zero has no sign. It's neither positive nor negative (or if you prefer, it's both). The concept of a signed zero is used in floating-point numbers to represent a value that's so small that it can't be distinguished from zero, but which may not be an actual zero. Such a non-zero number does have a sign. But mathematically, a negative zero is simply zero.</p>
+<p>However, the XInt library does have limited support for a "negative zero," for use in a planned future unlimited-precision floating point library built on it. To get a negative zero, negate a normal zero value with the unary minus, like so:</p>
+<div class="fragment"><pre class="fragment">integer z = -integer::zero();
+</pre></div><p>A negative zero will act exactly like a "normal" zero in all respects. The only way to detect a sign on it is by calling <a class="el" href="classboost_1_1xint_1_1integer.html#a6821767d0ec6c762a4c1002944550aae">the sign function</a> with the <code>signed_zero</code> parameter <code>true</code>. With that parameter, it will return -1 on any negative number, including zero.</p>
+<p>Note that the unary minus operator and the <a class="el" href="namespaceboost_1_1xint.html#aedc1654de47ce6d6635e5339b236f94d">negate</a> function are the only functions that will ever return a negative zero. </p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/zero_8dox.html (from r61200, /sandbox/xint/doc/nan_8dox.html)
==============================================================================
--- /sandbox/xint/doc/nan_8dox.html (original)
+++ sandbox/xint/doc/zero_8dox.html 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/doc/dox/nan.dox File Reference</title>
+<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/doc/dox/zero.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,10 +26,10 @@
</div>
</div>
<div class="contents">
-<h1>/home/chad/projects/xint/doc/dox/nan.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<h1>/home/chad/projects/xint/doc/dox/zero.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Apr 17 20:02:58 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
Modified: sandbox/xint/example/exceptions.cpp
==============================================================================
--- sandbox/xint/example/exceptions.cpp (original)
+++ sandbox/xint/example/exceptions.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -4,36 +4,20 @@
int main() {
using namespace std;
- using namespace boost;
- using namespace xint::blockable;
-
- integer n;
-
- // It *is* possible to block exceptions multiple times, so this assert
- // checks to see whether they're presently allowed. It is not needed,
- // it's only here for demonstration purposes.
- assert(xint::exceptions_allowed() == true);
+ using namespace boost::xint;
// We'll wrap this in a try block for demonstration purposes, just to
// prove that it doesn't throw an exception. You normally don't need a
- // try block if you're only expecting blockable exceptions.
+ // try block if you're using nothrow_integers.
try {
- // Create the "blocker" token. Until the token is destroyed, exceptions
- // will be blocked, except when explicitly re-enabled.
- xint::token blocker=xint::block_exceptions();
-
- // This assert is only here for demonstration purposes.
- assert(xint::exceptions_allowed() == false);
-
- // Call the function(s) that should be exception-blocked. The example
- // call tries to interpret an empty string as an integer, which would
- // normally throw an xint::invalid_digit exception.
- n = integer("");
+ // Call the function(s) that may produce errors. The example call tries
+ // to interpret an empty string as an integer, which would normally
+ // throw an xint::exception::invalid_digit.
+ nothrow_integer n = nothrow_integer("");
// n should be Not-a-Number, because there was an error but exceptions
- // were blocked. This example code is fairly useless, and is only here
- // for demonstration purposes, but you should always test for Not-a-Number
- // when blocking exceptions.
+ // are not allowed on nothrow_integers. This example code is fairly
+ // useless, but it shows how to test for errors.
if (n.is_nan()) {
cout << "n is Not-a-Number, do some intelligent error handling here."
<< endl;
@@ -45,12 +29,7 @@
} catch (std::exception& e) {
// This example code should never get to this block, because exceptions
// were blocked.
- cout << "Error, threw an exception when exceptions were blocked!\n" <<
- e.what() << endl;
+ cout << "Error, nothrow_integer threw an exception!\n" << e.what() <<
+ endl;
}
-
- // Now exceptions are re-enabled, because the blocking behavior ended when
- // the "blocker" token was destroyed at the end of the try block. Note that
- // this assert is not needed, it's only here for demonstration purposes.
- assert(xint::exceptions_allowed() == true);
}
Modified: sandbox/xint/example/fibonacci.cpp
==============================================================================
--- sandbox/xint/example/fibonacci.cpp (original)
+++ sandbox/xint/example/fibonacci.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -2,7 +2,7 @@
#include <boost/xint/xint.hpp>
int main() {
- using namespace xint::core;
+ using namespace boost::xint;
using std::cout;
using std::endl;
Modified: sandbox/xint/example/genprime.cpp
==============================================================================
--- sandbox/xint/example/genprime.cpp (original)
+++ sandbox/xint/example/genprime.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -7,16 +7,17 @@
}
int main() {
- using namespace std;
+ using std::cout;
+ using std::endl;
using namespace boost;
- using namespace xint::core;
+ using namespace xint;
const unsigned int bits=512;
try {
// Use the system's strong random number generator, via the XInt-
// provided convenience class.
- xint::set_random_generator(new xint::strong_random_generator);
+ set_random_generator(new strong_random_generator);
// Generate the prime number, keeping the user informed of the
// progress.
@@ -25,7 +26,7 @@
// Success!
cout << "\nA random " << bits << "-bit prime is: " << p << endl;
- } catch (xint::no_strong_random& e) {
+ } catch (exceptions::no_strong_random& e) {
// xint::strong_random_generator will throw this if the system doesn't
// have a strong random number generator.
cout << e.what() << endl;
Added: sandbox/xint/src/base_integer.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/base_integer.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,284 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the \c base_integer member functions.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+#ifdef XINT_THREADSAFE
+ #define XINT_DISABLE_COPY_ON_WRITE
+#endif
+
+namespace boost {
+namespace xint {
+namespace detail {
+
+namespace {
+struct zerodata_t: public data_t<> {
+ public:
+ zerodata_t() { copies=1; length=max_length=1; *magnitude=0; }
+} zerodata;
+} // namespace
+
+base_integer::base_integer(size_t count, digit_t mask, void *d):
+ fixed_mask(mask), negative(false), data(reinterpret_cast<data_t<>*>(d))
+{
+ assert(mask != 0);
+
+ data->copies=1;
+ data->length=1;
+ data->max_length=count;
+
+ digit_t *i = data->magnitude, *ie = i + data->max_length;
+ while (i != ie) *i++ = 0;
+}
+
+base_integer::~base_integer() {
+ if (fixed_mask != 0 && data && data->copies == 1) deallocate(data);
+}
+
+digit_t base_integer::_get_digit(size_t index) const {
+ return data->magnitude[index];
+}
+
+digit_t base_integer::_get_digit(size_t index, bool) const {
+ if (index >= data->length) return 0;
+ return data->magnitude[index];
+}
+
+digit_t* base_integer::_get_digits() {
+ return data->magnitude;
+}
+
+const digit_t* base_integer::_get_digits() const {
+ return data->magnitude;
+}
+
+size_t base_integer::_get_length() const {
+ return data->length;
+}
+
+void base_integer::_duplicate(const base_integer& c, size_t extra) {
+ negative=c.negative;
+ data=duplicate(data, c.data, extra);
+}
+
+void base_integer::_attach(data_t<> *new_data, bool neg) {
+ assert(fixed_mask == 0);
+
+ #ifdef XINT_DISABLE_COPY_ON_WRITE
+ data=duplicate(data, new_data);
+ #else
+ if (data && --data->copies == 0) deallocate(data);
+ data=new_data;
+ if (data) ++data->copies;
+ #endif
+ negative=neg;
+}
+
+void base_integer::_attach(const base_integer& copy) {
+ _attach(copy.data, copy.negative);
+}
+
+void base_integer::_attach_0() {
+ _attach(&zerodata);
+}
+
+void base_integer::_attach_1(digit_t n) {
+ if (n == 0) {
+ _attach(&zerodata);
+ } else {
+ _attach(allocate(1));
+ *data->magnitude=n;
+ }
+}
+
+void base_integer::_attach_n(boost::uintmax_t n) {
+ static int bits = std::numeric_limits<boost::uintmax_t>::digits;
+ static int maxDigits = (bits + bits_per_digit - 1) / bits_per_digit;
+
+ _attach(allocate(maxDigits));
+ _set_n(n);
+}
+
+void base_integer::_set_n(boost::uintmax_t n) {
+ // Assumes that the proper allocation was already done
+ data->length = data->max_length;
+ digit_t *i = data->magnitude, *ie = i + data->max_length;
+ while (n != 0 && i != ie) {
+ *i++ = digit_t(n & digit_mask);
+ n >>= bits_per_digit;
+ }
+ _cleanup();
+}
+
+bool base_integer::_is_unique() const {
+ return (!data || data->copies == 1);
+}
+
+bool base_integer::_is_zero() const {
+ return (data->length == 1 && *data->magnitude == 0);
+}
+
+bool base_integer::_get_negative() const {
+ return negative;
+}
+
+void base_integer::_set_negative(bool neg) {
+ negative=neg;
+}
+
+void base_integer::_cleanup() {
+ if (fixed_mask) data->magnitude[data->max_length-1] &= fixed_mask;
+ digit_t *p = data->magnitude + data->length - 1;
+ while (p != data->magnitude && *p == 0) { --data->length; --p; }
+ if (data->length == 1 && *data->magnitude == 0) negative = false;
+
+}
+
+void base_integer::_realloc(size_t new_digit_count) {
+ assert(fixed_mask == 0);
+ data = reallocate(data, new_digit_count);
+}
+
+void base_integer::_shift_left(size_t byBits) {
+ size_t bytes=byBits / bits_per_digit, bits=byBits % bits_per_digit;
+ size_t oldLength = data->length;
+
+ data=reallocate(data, data->length + bytes + 1);
+
+ if (bits != 0) {
+ // Handle both bits and bytes in one pass
+ digit_t *s = data->magnitude + oldLength - 1, *t = s + bytes + 1;
+
+ *t-- = *s >> (bits_per_digit - bits);
+ while (s > data->magnitude) {
+ *t = (*s-- << bits);
+ *t-- |= (*s >> (bits_per_digit - bits));
+ }
+ *t = (*s << bits);
+
+ if (bytes != 0) {
+ digit_t *t = data->magnitude, *te = t + bytes;
+ while (t != te) *t++ = 0;
+ }
+ } else if (bytes != 0) {
+ memmove(data->magnitude + bytes, data->magnitude, sizeof(digit_t) *
+ oldLength);
+ memset(data->magnitude, 0, sizeof(digit_t) * bytes);
+ }
+ _cleanup();
+}
+
+void base_integer::_shift_right(size_t byBits) {
+ size_t bytes=byBits / bits_per_digit, bits=byBits % bits_per_digit,
+ bits2 = bits_per_digit - bits;
+
+ if (bytes >= data->length) {
+ // Right-shift it into oblivion.
+ data->length = 1;
+ *data->magnitude = 0;
+ } else if (bits != 0) {
+ // Handle both bits and bytes in one pass
+ digit_t *t = data->magnitude, *s = data->magnitude + bytes,
+ *se = data->magnitude + data->length - 1;
+ while (s!=se) {
+ *t = (*s++ >> bits);
+ *t++ |= (*s << bits2);
+ }
+ *t = (*s >> bits);
+ if (bytes != 0) {
+ memset(data->magnitude + data->length - bytes, 0, sizeof(digit_t) *
+ bytes);
+ data->length -= bytes;
+ }
+ _cleanup();
+ } else if (bytes != 0) {
+ memmove(data->magnitude, data->magnitude + bytes, sizeof(digit_t) *
+ (data->length - bytes));
+ memset(data->magnitude + data->length - bytes, 0, sizeof(digit_t) *
+ bytes);
+ data->length -= bytes;
+ _cleanup();
+ }
+}
+
+void base_integer::_base_make_unique() {
+ if (!_is_unique()) data=duplicate(data);
+}
+
+void base_integer::_add(const base_integer& n) {
+ //assert(mCopies==1);
+ //assert(mLength >= addend.mLength);
+
+ // The answer to any addition problem contains, at most, one digit more
+ // than the largest addend.
+ data=reallocate(data, data->length + 1);
+
+ // Now add the digits, starting at the least-significant digit.
+ digit_t carry = 0;
+ size_t x = 0;
+ for (; x < n.data->length; ++x) {
+ doubledigit_t t = doubledigit_t(data->magnitude[x]) +
+ n.data->magnitude[x] + carry;
+ if (t >= digit_overflowbit) { carry = 1; t -= digit_overflowbit; }
+ else carry=0;
+ data->magnitude[x] = static_cast<digit_t>(t);
+ }
+
+ while (carry) {
+ doubledigit_t t = doubledigit_t(data->magnitude[x]) + 1;
+ if (t >= digit_overflowbit) { carry = 1; t -= digit_overflowbit; }
+ else carry=0;
+ data->magnitude[x] = static_cast<digit_t>(t);
+ ++x;
+ }
+
+ _cleanup();
+}
+
+void base_integer::_subtract(const base_integer& n) {
+ //assert(mCopies==1);
+ //assert(mLength >= subtrahend.mLength);
+
+ // For subtraction, the answer will always be less than or equal to the
+ // size of the longest operand, so we've already got enough room.
+
+ // Now subtract the digits, starting at the least-significant one.
+ size_t x;
+ int borrow = 0;
+ doubledigit_t t;
+ for (x = 0; x < n.data->length; ++x) {
+ t=(data->magnitude[x] + digit_overflowbit) - n.data->magnitude[x] -
+ borrow;
+ if (t < digit_overflowbit) borrow = 1;
+ else { borrow = 0; t -= digit_overflowbit; }
+ data->magnitude[x]=static_cast<digit_t>(t);
+ }
+
+ for (; x < data->length && borrow; ++x) {
+ t = (data->magnitude[x] + digit_overflowbit) - borrow;
+ if (t < digit_overflowbit) borrow=1;
+ else { borrow = 0; t -= digit_overflowbit; }
+ data->magnitude[x] = static_cast<digit_t>(t);
+ }
+
+ _cleanup();
+ if (borrow != 0) negative=!negative;
+}
+
+} // namespace detail
+} // namespace xint
+} // namespace boost
Modified: sandbox/xint/src/bit_manipulations.cpp
==============================================================================
--- sandbox/xint/src/bit_manipulations.cpp (original)
+++ sandbox/xint/src/bit_manipulations.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -16,15 +16,12 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
namespace boost {
namespace xint {
using namespace detail;
-namespace core {
-
/*! \brief Queries the value of a particular bit in an integer.
\param[in] n The integer to query.
@@ -50,14 +47,13 @@
*/
void setbit(integer& n, size_t bit) {
n._make_unique();
- detail::data_t *ndata=n._get_data();
size_t index=bit/bits_per_digit;
- if (index >= n._get_length()) ndata->realloc(index+1);
+ if (index >= n._get_length()) n._realloc(index+1);
digit_t mask=(digit_t(1) << (bit % bits_per_digit));
- ndata->digits[index] |= mask;
- ndata->skipLeadingZeros();
+ n._get_digits()[index] |= mask;
+ n._cleanup();
}
/*! \brief Sets a specific bit in an integer to zero.
@@ -72,8 +68,8 @@
if (index < n._get_length()) {
n._make_unique();
digit_t mask=(digit_t(1) << (bit % bits_per_digit));
- n._get_data()->digits[index] &= ~mask;
- n._get_data()->skipLeadingZeros();
+ n._get_digits()[index] &= ~mask;
+ n._cleanup();
}
}
@@ -89,11 +85,10 @@
size_t lowestbit(const integer& n, size_t valueIfZero) {
if (n.sign()==0) return valueIfZero;
- const detail::data_t *ndata=n._get_data();
- const digit_t *p=ndata->digits, *pe=p+ndata->mLength;
+ const digit_t *p=n._get_digits(), *pe=p+n._get_length();
while (p!=pe && *p==0) ++p;
- size_t index=(p - ndata->digits);
+ size_t index=(p - n._get_digits());
size_t r=(bits_per_digit * index);
digit_t digit=*p;
@@ -126,19 +121,19 @@
\returns An integer with all bits that are set in both parameters turned on.
*/
integer bitwise_and(const integer& n1, const integer& n2) {
- const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
- if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
+ bool n1larger=(n1._get_length() > n2._get_length());
+ const integer& smaller(n1larger ? n2 : n1), larger(n1larger ? n1 : n2);
integer r;
- detail::data_t *rdata=r._get_data();
- rdata->alloc(smaller->mLength);
+ r._realloc(smaller._get_length());
- const digit_t *s1=smaller->digits, *s1e=s1+smaller->mLength, *s2=larger->digits;
- digit_t *t=rdata->digits;
+ const digit_t *s1=smaller._get_digits(), *s1e=s1+smaller._get_length(),
+ *s2=larger._get_digits();
+ digit_t *t=r._get_digits();
while (s1 < s1e) *t++ = *s1++ & *s2++;
- rdata->skipLeadingZeros();
+ r._cleanup();
return r;
}
@@ -149,21 +144,20 @@
\returns An integer with all bits that are set in either parameter turned on.
*/
integer bitwise_or(const integer& n1, const integer& n2) {
- const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
- if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
+ bool n1larger=(n1._get_length() > n2._get_length());
+ const integer& smaller(n1larger ? n2 : n1), larger(n1larger ? n1 : n2);
integer r;
- detail::data_t *rdata=r._get_data();
- rdata->alloc(larger->mLength);
+ r._realloc(larger._get_length());
- const digit_t *s1=smaller->digits, *s1e=s1+smaller->mLength;
- const digit_t *s2=larger->digits, *s2e=s2+larger->mLength;
- digit_t *t=rdata->digits;
+ const digit_t *s1=smaller._get_digits(), *s1e=s1+smaller._get_length();
+ const digit_t *s2=larger._get_digits(), *s2e=s2+larger._get_length();
+ digit_t *t=r._get_digits();
while (s1<s1e) *t++ = *s1++ | *s2++;
while (s2<s2e) *t++ = *s2++;
- rdata->skipLeadingZeros();
+ r._cleanup();
return r;
}
@@ -175,21 +169,20 @@
both, turned on.
*/
integer bitwise_xor(const integer& n1, const integer& n2) {
- const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
- if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
+ bool n1larger=(n1._get_length() > n2._get_length());
+ const integer& smaller(n1larger ? n2 : n1), larger(n1larger ? n1 : n2);
integer r;
- detail::data_t *rdata=r._get_data();
- rdata->alloc(larger->mLength);
+ r._realloc(larger._get_length());
- const digit_t *s1=smaller->digits, *s1e=s1+smaller->mLength;
- const digit_t *s2=larger->digits, *s2e=s2+larger->mLength;
- digit_t *t=rdata->digits;
+ const digit_t *s1=smaller._get_digits(), *s1e=s1+smaller._get_length();
+ const digit_t *s2=larger._get_digits(), *s2e=s2+larger._get_length();
+ digit_t *t=r._get_digits();
while (s1<s1e) *t++ = *s1++ ^ *s2++;
while (s2<s2e) *t++ = *s2++;
- rdata->skipLeadingZeros();
+ r._cleanup();
return r;
}
@@ -218,7 +211,7 @@
integer nn(n);
nn._make_unique();
- nn._get_data()->shift_left(byBits);
+ nn._shift_left(byBits);
return nn;
}
@@ -234,10 +227,9 @@
integer nn(n);
nn._make_unique();
- nn._get_data()->shift_right(byBits);
+ nn._shift_right(byBits);
return nn;
}
-} // namespace core
} // namespace xint
} // namespace boost
Deleted: sandbox/xint/src/blockable_bit_manipulations.cpp
==============================================================================
--- sandbox/xint/src/blockable_bit_manipulations.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,143 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the bit-manipulation functions for blockable integers.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-/*! \copydoc core::getbit
-
-\note If exceptions are blocked, returns false instead of throwing.
-*/
-bool getbit(const integer& n, size_t bit) {
- try {
- return getbit(core::integer(n), bit);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return false;
- }
-}
-
-//! \copydoc core::setbit
-void setbit(integer& n, size_t bit) {
- try {
- core::integer nn(n);
- setbit(nn, bit);
- n=integer(nn);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- }
-}
-
-//! \copydoc core::clearbit
-void clearbit(integer& n, size_t bit) {
- try {
- core::integer nn(n);
- clearbit(nn, bit);
- n=integer(nn);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- }
-}
-
-/*! \copydoc core::lowestbit
-
-\note If exceptions are blocked, returns zero instead of throwing.
-*/
-size_t lowestbit(const integer& n, size_t valueIfZero) {
- try {
- return lowestbit(core::integer(n), valueIfZero);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
- }
-}
-
-/*! \copydoc core::highestbit
-
-\note If exceptions are blocked, returns zero instead of throwing.
-*/
-size_t highestbit(const integer& n, size_t valueIfZero) {
- try {
- return highestbit(core::integer(n), valueIfZero);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
- }
-}
-
-//! \copydoc core::bitwise_and
-integer bitwise_and(const integer& n1, const integer& n2) {
- try {
- return integer(bitwise_and(core::integer(n1), core::integer(n2)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::bitwise_or
-integer bitwise_or(const integer& n1, const integer& n2) {
- try {
- return integer(bitwise_or(core::integer(n1), core::integer(n2)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::bitwise_xor
-integer bitwise_xor(const integer& n1, const integer& n2) {
- try {
- return integer(bitwise_xor(core::integer(n1), core::integer(n2)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::shift
-integer shift(const integer& n, int byBits) {
- if (byBits > 0) return shift_left(n, byBits);
- else return shift_right(n, -byBits);
-}
-
-//! \copydoc core::shift_left
-integer shift_left(const integer& n, size_t byBits) {
- try {
- return integer(shift_left(core::integer(n), byBits));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::shift_right
-integer shift_right(const integer& n, size_t byBits) {
- try {
- return integer(shift_right(core::integer(n), byBits));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_compare.cpp
==============================================================================
--- sandbox/xint/src/blockable_compare.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,74 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the the compare function and comparison operators for
- blockable integers.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-/*! \copydoc core::compare
-
-\note If exceptions are blocked, returns 0 instead of throwing.
-*/
-int compare(const integer &b1, const integer &b2, bool ignoresign) {
- try {
- return compare(core::integer(b1), core::integer(b2));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
- }
-}
-
-namespace {
-template <typename T>
-bool cmp(const integer &num1, const integer &num2, const T& t) {
- try {
- return t(compare(core::integer(num1), core::integer(num2)), 0);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return false;
- }
-}
-} // namespace
-
-bool operator!(const integer &num1) {
- try {
- return operator!(core::integer(num1));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return false;
- }
-}
-
-bool operator==(const integer &num1, const integer &num2) {
- return cmp(num1, num2, std::equal_to<int>()); }
-bool operator!=(const integer& num1, const integer& num2) {
- return cmp(num1, num2, std::not_equal_to<int>()); }
-bool operator<(const integer& num1, const integer& num2) {
- return cmp(num1, num2, std::less<int>()); }
-bool operator>(const integer& num1, const integer& num2) {
- return cmp(num1, num2, std::greater<int>()); }
-bool operator<=(const integer& num1, const integer& num2) {
- return cmp(num1, num2, std::less_equal<int>()); }
-bool operator>=(const integer& num1, const integer& num2) {
- return cmp(num1, num2, std::greater_equal<int>()); }
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_convert.cpp
==============================================================================
--- sandbox/xint/src/blockable_convert.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,76 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the conversion functions for blockable integers.
-
- Note that the xint::blockable::to<T> function is not here, because it's a
- template function and must be defined in a header file.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-using namespace detail;
-
-/*! \copydoc core::to_string
-
-\note If exceptions are blocked, it returns an empty string instead of throwing
-an exception.
-*/
-std::string to_string(const integer& n, size_t base, bool uppercase) {
- try {
- return to_string(core::integer(n), base, uppercase);
- } catch (exception&) {
- if (exceptions_allowed()) throw;
- else return std::string();
- }
-}
-
-//! \copydoc core::from_string
-integer from_string(const std::string& str, size_t base) {
- try {
- if (str==detail::nan_text) return integer::nan();
- return integer(core::from_string(str, base));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::from_binary
-integer from_binary(const std::string& str) {
- try {
- return integer(core::from_binary(str));
- } catch (exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::to_binary
-std::string to_binary(const integer& n) {
- try {
- return to_binary(core::integer(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return std::string();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_gcd.cpp
==============================================================================
--- sandbox/xint/src/blockable_gcd.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,63 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Greatest Common Denominator and Least Common Multple for blockable
- integers.
-
- Also holds the definition for invmod, since it uses the GCD algorithm.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-//! \copydoc core::gcd
-integer gcd(const integer& num1, const integer& num2) {
- try {
- return integer(gcd(core::integer(num1), core::integer(num2)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::lcm
-integer lcm(const integer& num1, const integer& num2) {
- try {
- return integer(lcm(core::integer(num1), core::integer(num2)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-/*! \copydoc core::invmod
-
-\note If exceptions are blocked, it returns zero instead of throwing an
-exception.
-*/
-integer invmod(const integer& n, const integer& m) {
- try {
- return integer(invmod(core::integer(n), core::integer(m)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_integer.cpp
==============================================================================
--- sandbox/xint/src/blockable_integer.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,259 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for the xint::blockable::integer member
- functions.
-*/
-
-#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
-
-namespace boost {
-namespace xint {
-
-const std::string detail::nan_text("#NaN#");
-
-namespace blockable {
-
-////////////////////////////////////////////////////////////////////////////////
-// The blockable integer class
-
-namespace {
- std::auto_ptr<integer> cZero, cOne, cNaN;
-}
-
-//! \copydoc xint::core::integer::integer()
-integer::integer() {
- _init();
-}
-
-//! \copydoc xint::core::integer::integer(const core::integer&)
-integer::integer(const integer& b) {
- if (!b.is_nan()) _init(b);
-}
-
-/*! \brief Creates an integer from a core::integer.
-
-\param[in] b An existing core::integer.
-
-\note
-This library can use a \link cow copy-on-write technique\endlink, making
-copying (even of large numbers) a very inexpensive operation.
-
-\overload
-*/
-integer::integer(const core::integer& b) {
- _attach(b);
-}
-
-//! \copydoc xint::core::integer::integer(const std::string&, size_t)
-integer::integer(const std::string& str, size_t base) {
- try {
- _init(from_string(str, base));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- }
-}
-
-/*! \copydoc core::integer::odd
-
-\note If exceptions are blocked, returns false instead of throwing.
-*/
-bool integer::odd() const {
- if (is_nan()) {
- if (exceptions_allowed()) throw not_a_number();
- else return false;
- }
- return ((_get_digit(0) & 0x01)==1);
-}
-
-/*! \copydoc core::integer::even
-
-\note If exceptions are blocked, returns false instead of throwing.
-*/
-bool integer::even() const {
- if (is_nan()) {
- if (exceptions_allowed()) throw not_a_number();
- else return false;
- }
- return ((_get_digit(0) & 0x01)==0);
-}
-
-/*! \copydoc core::integer::sign
-
-\note If exceptions are blocked, returns zero instead of throwing.
-*/
-int integer::sign() const {
- if (is_nan()) {
- if (exceptions_allowed()) throw not_a_number();
- else return 0;
- }
- if (_get_length()==1 && _get_digit(0)==0) return 0;
- return (_get_data()->mIsNegative ? -1 : 1);
-}
-
-/*! \copydoc core::integer::hex_digits
-
-\note If exceptions are blocked, returns zero instead of throwing.
-*/
-size_t integer::hex_digits() const {
- try {
- return core::integer(*this).hex_digits();
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
- }
-}
-
-/*! \brief Tests \c *this for Not-a-Number.
-
-\returns \c true if \c *this is Not-a-Number, otherwise \c false.
-
-\see \ref nan
-*/
-bool integer::is_nan() const {
- return (_get_data()==0);
-}
-
-integer& integer::operator+=(const integer& addend) {
- try {
- *this=integer(core::integer(*this).operator+=(core::integer(addend)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- *this=integer::nan();
- }
- return *this;
-}
-
-integer& integer::operator-=(const integer& subtrahend) {
- try {
- *this=integer(core::integer(*this).operator-=(core::integer(subtrahend)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- *this=integer::nan();
- }
- return *this;
-}
-
-integer& integer::operator=(const integer &c) {
- try {
- _attach(c);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- _attach(0);
- }
- return *this;
-}
-
-integer& integer::operator*=(const integer& b) { *this=multiply(*this, b); return *this; }
-integer& integer::operator/=(const integer& b) { *this=divide(*this, b); return *this; }
-integer& integer::operator%=(const integer& b) { *this=mod(*this, b); return *this; }
-
-integer& integer::operator++() { *this += one(); return *this; }
-integer& integer::operator--() { *this -= one(); return *this; }
-integer integer::operator++(int) { integer s=*this; *this += one(); return s; }
-integer integer::operator--(int) { integer s=*this; *this -= one(); return s; }
-
-integer integer::operator<<(size_t shift) const { return shift_left(*this, shift); }
-integer integer::operator>>(size_t shift) const { return shift_right(*this, shift); }
-integer& integer::operator&=(const integer& n) { *this=bitwise_and(*this, n); return *this; }
-integer& integer::operator|=(const integer& n) { *this=bitwise_or(*this, n); return *this; }
-integer& integer::operator^=(const integer& n) { *this=bitwise_xor(*this, n); return *this; }
-
-integer& integer::operator<<=(size_t shift) {
- try {
- *this=integer(core::integer(*this).operator<<=(shift));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- *this=integer::nan();
- }
- return *this;
-}
-
-integer& integer::operator>>=(size_t shift) {
- try {
- *this=integer(core::integer(*this).operator>>=(shift));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- *this=integer::nan();
- }
- return *this;
-}
-
-const integer& integer::zero() {
- if (cZero.get()==0) cZero.reset(new integer(core::integer::zero()));
- return *cZero;
-}
-
-const integer& integer::one() {
- if (cOne.get()==0) cOne.reset(new integer(core::integer::one()));
- return *cOne;
-}
-
-const integer& integer::nan() {
- if (cNaN.get()==0) {
- integer *n=new integer();
- n->_attach(0);
- cNaN.reset(n);
- }
- return *cNaN;
-}
-
-void integer::_init(detail::digit_t init) {
- try {
- _attach(new detail::data_t(init));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- }
-}
-
-void integer::_init(const integer &c) {
- try {
- _attach(c);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- }
-}
-
-void integer::_init(boost::uintmax_t n) {
- try {
- _attach(new detail::data_t(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- }
-}
-
-void integer::_make_unique() {
- if (!_is_unique()) {
- try {
- _attach(new detail::data_t(_get_data()));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- _attach(0); // Turns it into a Not-a-Number,
- }
- }
-}
-
-void integer::_set_negative(bool negative) {
- if (_get_data()->mIsNegative != negative) {
- _make_unique();
- detail::data_t *p=_get_data();
- p->mIsNegative=negative;
- p->skipLeadingZeros();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_misc.cpp
==============================================================================
--- sandbox/xint/src/blockable_misc.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,40 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Functions for blockable integers that don't fall into any other
- category.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-/*! \copydoc core::log2
-
-\note If exceptions are blocked, returns 0 instead of throwing.
-*/
-size_t log2(const integer& n) {
- try {
- return log2(core::integer(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_modular.cpp
==============================================================================
--- sandbox/xint/src/blockable_modular.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,74 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for the basic modular math functions for
- blockable integers.
-
- The xint::invmod function, which logically would be here, is actually in
- gcd.cpp to share the gcd_core function.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-//! \copydoc core::mod
-integer mod(const integer& n, const integer& m) {
- try {
- return integer(mod(core::integer(n), core::integer(m)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::mulmod
-integer mulmod(const integer& n, const integer& by, const integer& m) {
- try {
- return integer(mod(core::integer(n) * core::integer(by),
- core::integer(m)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::sqrmod
-integer sqrmod(const integer& n, const integer& m) {
- try {
- return integer(mod(sqr(core::integer(n)), core::integer(m)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::powmod
-integer powmod(const integer& n, const integer& e, const integer& m, bool
- noMontgomery)
-{
- try {
- return integer(powmod(core::integer(n), core::integer(e),
- core::integer(m), noMontgomery));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_operators.cpp
==============================================================================
--- sandbox/xint/src/blockable_operators.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,38 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for the basic math operators for blockable
- integers.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-const integer& operator+(const integer& a) { return a; }
-integer operator-(const integer& a) { return negate(a); }
-integer operator+(const integer& num1, const integer& num2) { return add(num1, num2); }
-integer operator-(const integer& num1, const integer& num2) { return subtract(num1, num2); }
-integer operator*(const integer& num1, const integer& num2) { return multiply(num1, num2); }
-integer operator/(const integer& num1, const integer& num2) { return divide(num1, num2); }
-integer operator%(const integer& num1, const integer& num2) { return mod(num1, num2); }
-integer operator&(const integer& n1, const integer& n2) { return bitwise_and(n1, n2); }
-integer operator|(const integer& n1, const integer& n2) { return bitwise_or(n1, n2); }
-integer operator^(const integer& n1, const integer& n2) { return bitwise_xor(n1, n2); }
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_powers.cpp
==============================================================================
--- sandbox/xint/src/blockable_powers.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,64 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for blockable integer functions related to
- powers of a number.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-//! \copydoc core::pow2
-integer pow2(size_t e) {
- integer r;
- setbit(r, e);
- return r;
-}
-
-//! \copydoc core::sqr
-integer sqr(const integer& n) {
- try {
- return integer(sqr(core::integer(n)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::pow
-integer pow(const integer& n, const integer& e) {
- try {
- return integer(pow(core::integer(n), core::integer(e)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-//! \copydoc core::factorial
-integer factorial(size_t n) {
- try {
- return integer(core::factorial(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_primes.cpp
==============================================================================
--- sandbox/xint/src/blockable_primes.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,50 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for functions related to prime numbers for
- blockable integers.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-/*! \copydoc core::is_prime
-
-\note If exceptions are blocked, returns -1 instead of throwing.
-*/
-int is_prime(const integer& n, callback_t callback) {
- try {
- return is_prime(core::integer(n), callback);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return -1;
- }
-}
-
-//! \copydoc core::random_prime
-integer random_prime(size_t size_in_bits, callback_t callback) {
- try {
- return integer(core::random_prime(size_in_bits, callback));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_primitives.cpp
==============================================================================
--- sandbox/xint/src/blockable_primitives.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,95 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for math primitives for blockable integers.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-//! \copydoc core::abs
-integer abs(const integer& n) {
- try {
- return integer(abs(core::integer(n)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::negate
-integer negate(const integer& n) {
- try {
- return integer(negate(core::integer(n)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::add
-integer add(const integer& n1, const integer& n2) {
- try {
- return integer(add(core::integer(n1), core::integer(n2)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::subtract
-integer subtract(const integer& n1, const integer& n2) {
- try {
- return integer(subtract(core::integer(n1), core::integer(n2)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::multiply
-integer multiply(const integer& n, const integer& by) {
- try {
- return integer(multiply(core::integer(n), core::integer(by)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-//! \copydoc core::divide
-integer divide(const integer& dividend, const integer& divisor) {
- return divide_r(dividend, divisor).first;
-}
-
-/*! \copydoc core::divide_r
-
-\note If exceptions are blocked, returns an std::pair with two Not-a-Number
-values instead of throwing.
-*/
-std::pair<integer, integer> divide_r(const integer& d1, const integer& d2) {
- try {
- return divide_r(core::integer(d1), core::integer(d2));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return std::make_pair(integer::nan(), integer::nan());
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_random.cpp
==============================================================================
--- sandbox/xint/src/blockable_random.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,40 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for the random number functions for
- blockable integers.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-//! \copydoc core::random_by_size
-integer random_by_size(size_t bits, bool high_bit_on, bool low_bit_on, bool
- can_be_negative)
-{
- try {
- return integer(core::random_by_size(bits, high_bit_on, low_bit_on,
- can_be_negative));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Deleted: sandbox/xint/src/blockable_roots.cpp
==============================================================================
--- sandbox/xint/src/blockable_roots.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for blockable integer functions related to
- roots of a number.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-namespace boost {
-namespace xint {
-namespace blockable {
-
-//! \copydoc core::sqrt
-integer sqrt(const integer& n) {
- try {
- return integer(sqrt(core::integer(n)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
-}
-
-} // namespace blockable
-} // namespace xint
-} // namespace boost
Modified: sandbox/xint/src/compare.cpp
==============================================================================
--- sandbox/xint/src/compare.cpp (original)
+++ sandbox/xint/src/compare.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -16,14 +16,11 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
#include <functional>
namespace boost {
namespace xint {
-namespace core {
-
/*! \brief Compare two integer objects.
\param[in] b1, b2 The integers to compare.
@@ -47,22 +44,18 @@
if (sign1 < 0) return compare(-b2, -b1, ignoresign);
}
- const detail::data_t *b1data=b1._get_data();
- const detail::data_t *b2data=b2._get_data();
-
- int answer=0;
- if (b1data->mLength != b2data->mLength) {
- answer=((b1data->mLength < b2data->mLength) ? -1 : 1);
+ if (b1._get_length() != b2._get_length()) {
+ return ((b1._get_length() < b2._get_length()) ? -1 : 1);
} else {
- for (int x = int(b1data->mLength) - 1; x >= 0; --x) {
- if (b1data->digits[x] != b2data->digits[x]) {
- answer=((b1data->digits[x] < b2data->digits[x]) ? -1 : 1);
- break;
- }
- }
+ size_t len=b1._get_length();
+ const detail::digit_t *b1d=b1._get_digits(), *b1i=b1d+len;
+ const detail::digit_t *b2d=b2._get_digits(), *b2i=b2d+len;
+ while (b1i > b1d)
+ if (*(--b1i) != *(--b2i))
+ return ((*b1i < *b2i) ? -1 : 1);
}
- return answer;
+ return 0;
}
bool operator!(const integer &num1) { return num1.sign()==0; }
@@ -79,6 +72,5 @@
bool operator>=(const integer& num1, const integer& num2) {
return compare(num1, num2)>=0; }
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/convert.cpp
==============================================================================
--- sandbox/xint/src/convert.cpp (original)
+++ sandbox/xint/src/convert.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -24,7 +24,6 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
#include <vector>
#include <algorithm>
@@ -45,8 +44,6 @@
} // namespace
-namespace core {
-
/*! \brief Creates a string representation of the specified integer.
\param[in] n The integer to convert.
@@ -55,10 +52,9 @@
\param[in] uppercase Whether to make alphabetic characters (for bases greater
than ten) uppercase or not. Defaults to \c false.
-\returns The string value of \c n. If \c n is Not-a-Number, returns the string
-\c \#NaN#.
+\returns The string value of \c n.
-\exception xint::invalid_base if base is less than two or greater than 36.
+\exception exceptions::invalid_base if base is less than two or greater than 36.
\remarks
This is the function that's called when you ask the library to write an integer
@@ -66,16 +62,16 @@
and 36. (Streams only allow base-8, base-10, or base-16.)
*/
std::string to_string(const integer& n, size_t base, bool uppercase) {
- if (base<2 || base>36) throw invalid_base();
+ if (base<2 || base>36) throw exceptions::invalid_base();
if (n.sign()==0) return "0";
std::ostringstream out;
if (base==16) {
// Special no-division version, primarily for debugging division
- const data_t *ndata=n._get_data();
- const digit_t *firstDigit=ndata->digits,
- *lastDigit=firstDigit + ndata->mLength - 1;
+ //const data_t *ndata=n._get_data();
+ const digit_t *firstDigit=n._get_digits(),
+ *lastDigit=firstDigit + n._get_length() - 1;
const int bitsPerDigit=4;
const digit_t mask=(doubledigit_t(1) << bitsPerDigit)-1;
@@ -126,15 +122,14 @@
is assumed to be base-8; any number with a leading zero-x or zero-X (such as
0x1f) is base-16, and anything else is base-10.
-\returns An integer with the numeric value of the string in base \c base. If the
-string is \c \#NaN#, then it will return \link nan Not-a-Number\endlink.
+\returns An integer with the numeric value of the string in base \c base.
-\exception xint::overflow_error if there is not enough free memory to create the
-integer.
-\exception xint::invalid_base if the base parameter is not between 2 and 36
+\exception exceptions::overflow_error if there is not enough free memory to
+create the integer.
+\exception exceptions::invalid_base if the base parameter is not between 2 and 36
(inclusive) or the constant xint::autobase.
-\exception xint::invalid_digit if the string contains any digit that cannot be
-part of a number in the specified base, or if there are no valid digits.
+\exception exceptions::invalid_digit if the string contains any digit that cannot
+be part of a number in the specified base, or if there are no valid digits.
\remarks
This is the function that's called when reading an integer from a stream, or
@@ -158,8 +153,8 @@
} else base=10;
}
- if (base<2 || base>36) throw invalid_base();
- if (*c==0) throw invalid_digit("No valid digits");
+ if (base<2 || base>36) throw exceptions::invalid_base();
+ if (*c==0) throw exceptions::invalid_digit("No valid digits");
const integer shift(base);
@@ -169,11 +164,11 @@
if (*c>='0' && *c<='9') digit=*c-'0';
else if (*c>='A' && *c<='Z') digit=*c-'A'+10;
else if (*c>='a' && *c<='z') digit=*c-'a'+10;
- else throw invalid_digit("encountered non-alphanumeric character in "
- "string");
+ else throw exceptions::invalid_digit("encountered non-alphanumeric "
+ "character in string");
- if (digit >= base) throw invalid_digit("encountered digit greater than "
- "base allows");
+ if (digit >= base) throw exceptions::invalid_digit("encountered digit "
+ "greater than base allows");
r = (r * shift) + digit;
++c;
@@ -196,9 +191,8 @@
const size_t bitsPerByte=std::numeric_limits<unsigned char>::digits;
integer r;
- detail::data_t *rdata=r._get_data();
- rdata->alloc((str.length() + bytesPerDigit - 1)/bytesPerDigit);
- digit_t *p=rdata->digits;
+ r._realloc((str.length() + bytesPerDigit - 1)/bytesPerDigit);
+ digit_t *p=r._get_digits();
unsigned char *s=(unsigned char *)str.data(), *se=s+str.length();
while (s<se) {
@@ -207,7 +201,7 @@
d |= (digit_t(*s++) << (i * bitsPerByte));
*p++=d;
}
- rdata->skipLeadingZeros();
+ r._cleanup();
return r;
}
@@ -221,9 +215,6 @@
This function only stores the absolute value of \c n; if you need the sign, you
must store it separately.
-\par If exceptions are blocked, returns an empty std::string instead of
-throwing.
-
\remarks
A binary representation is sometimes used for persistent storage or
transmission, as it is more space-efficient than a string representation.
@@ -236,8 +227,7 @@
std::vector<unsigned char> temp;
temp.reserve(n._get_length() * bytesPerDigit);
- const detail::data_t *ndata=n._get_data();
- const digit_t *p=ndata->digits, *pe=p+n._get_length();
+ const digit_t *p=n._get_digits(), *pe=p+n._get_length();
while (p != pe) {
digit_t d(*p++);
for (size_t i=0; i<bytesPerDigit; ++i) {
@@ -250,6 +240,5 @@
return std::string(c, c+temp.size());
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/data_t.cpp
==============================================================================
--- sandbox/xint/src/data_t.cpp (original)
+++ sandbox/xint/src/data_t.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -12,11 +12,10 @@
*/
/*! \file
- \brief Contains the definitions for xint::detail::data_t member functions.
+ \brief Contains the definitions for data_t allocation functions.
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
#include <cassert>
@@ -24,320 +23,107 @@
namespace xint {
namespace detail {
-data_t::data_t(digit_t initial1, digit_t initial2, digit_t initial3) {
- mLength=1;
- mAllocated=QuickDigits::count;
- digits=mQuickDigits;
- digits[0]=initial1;
- digits[1]=initial2;
- digits[2]=initial3;
- mCopies=0;
- mIsNegative=false;
-}
-
-//! \overload
-data_t::data_t(data_t *c) {
- mLength=c->mLength;
- if (c->digits == c->mQuickDigits) {
- digits=mQuickDigits;
- mAllocated=QuickDigits::count;
- } else {
- try {
- mAllocated=mLength;
- #ifdef XINT_SECURE
- digits=new digit_t[mAllocated];
- #else
- mStorage.resize(mAllocated, 0);
- digits=&mStorage[0];
- #endif
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
- }
- memcpy(digits, c->digits, mLength*sizeof(digit_t));
-
- mCopies=0;
- mIsNegative=c->mIsNegative;
-}
+static size_t datasize=(sizeof(data_t<>)+sizeof(digit_t)-1) / sizeof(digit_t);
-//! \overload
-data_t::data_t(boost::uintmax_t n, bool) {
- static int bits=std::numeric_limits<boost::uintmax_t>::digits;
- static int maxDigits=(bits+detail::bits_per_digit-1)/detail::bits_per_digit;
-
- mLength=1;
- mAllocated=QuickDigits::count;
- digits=mQuickDigits;
- digits[0]=digits[1]=digits[2]=0;
- mCopies=0;
- mIsNegative=false;
-
- alloc(maxDigits);
- digit_t *i=digits;
- while (n != 0) {
- *i++=detail::digit_t(n & detail::digit_mask);
- n >>= detail::bits_per_digit;
+data_t<> *allocate(size_t max_digits, size_t initial_length) {
+ if (max_digits < 1) max_digits = 1;
+ size_t count = max_digits - 1 + datasize;
+
+ try {
+ digit_t *storage(new digit_t[count]);
+ data_t<> *r=reinterpret_cast<data_t<>*>(storage);
+ r->copies=0;
+ r->length=(std::min)(initial_length, max_digits);
+ r->max_length=max_digits;
+
+ digit_t *p = r->magnitude, *pe = p + r->length;
+ while (p!=pe) *p++=0;
+ return r;
+ } catch (std::bad_alloc&) {
+ throw exceptions::overflow_error("Out of memory allocating integer");
}
- skipLeadingZeros();
}
-#ifdef XINT_SECURE
-data_t::~data_t() {
- zero(mQuickDigits, QuickDigits::count);
- if (digits != mQuickDigits) {
- zero(digits, mAllocated);
- delete[] digits;
- }
-}
-#endif
-
-/*!
- Call this after every manipulation of a data_t object that could possibly
- leave leading zeros in the integer.
-*/
-void data_t::skipLeadingZeros() {
- digit_t *d=digits+mLength-1;
- while (d>digits && *d==0) --d;
- mLength=int((d-digits)+1);
- if (mLength==1 && digits[0]==0) mIsNegative=false; // Zero isn't negative
-}
-
-void data_t::quickset(digit_t d1, digit_t d2, digit_t d3) {
- assert(mCopies==1);
-
- mLength=3;
- digits[0]=d1;
- digits[1]=d2;
- digits[2]=d3;
- mIsNegative=false;
- skipLeadingZeros();
-}
-
-void data_t::alloc(size_t newcount, bool copydigits) {
- if (digits==mQuickDigits && newcount<=QuickDigits::count) {
- if (!copydigits) zero(digits, QuickDigits::count);
- else zero(digits+mLength, (newcount-mLength));
- mLength=newcount;
- } else if (newcount < mAllocated) {
- if (copydigits) {
- if (newcount>mLength) zero(digits+mLength, newcount-mLength);
- mLength=newcount;
+data_t<> *reallocate(data_t<> *olddata, size_t newsize) {
+ if (olddata==0) {
+ data_t<> *newdata=allocate(newsize);
+ newdata->copies=1;
+ return newdata;
+ } if (olddata->copies == 1 && newsize <= olddata->max_length) {
+ // We can re-use this data.
+ if (olddata->length < newsize) {
+ digit_t *p=olddata->magnitude + olddata->length,
+ *pe=olddata->magnitude + newsize;
+ while (p!=pe) *p++=0;
} else {
- mLength=newcount;
- zero(digits, mLength);
+ digit_t *p=olddata->magnitude + olddata->length,
+ *pe=olddata->magnitude + newsize;
+ while (p!=pe) *(--p)=0;
}
+ olddata->length = newsize;
+ return olddata;
} else {
- #ifdef XINT_SECURE
- int e=newcount;
- newcount=1;
- while (newcount < e) newcount <<= 1;
- #endif
-
- if (digits==mQuickDigits && copydigits) {
- try {
- #ifdef XINT_SECURE
- digits=new digit_t[newcount];
- #else
- mStorage.resize(newcount);
- digits=&mStorage[0];
- #endif
- } catch (std::bad_alloc&) {
- digits=mQuickDigits; // Might allow for recovery in some cases
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
-
- memcpy(digits, mQuickDigits, mLength*sizeof(digit_t));
- zero(digits+mLength, newcount-mLength);
- } else {
- #ifdef XINT_SECURE
- digit_t *newDigits=0;
- try {
- newDigits=new digit_t[newcount];
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
-
- if (copydigits) {
- memcpy(newDigits, digits, mLength*sizeof(digit_t));
- zero(newDigits+mLength, newcount-mLength);
- } else zero(newDigits, newcount);
-
- if (digits!=mQuickDigits) {
- zero(digits, mAllocated);
- delete[] digits;
- }
- digits=newDigits;
- #else
- try {
- mStorage.resize(newcount);
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
- digits=&mStorage[0];
- if (!copydigits) zero(digits, newcount);
- #endif
- }
- mLength=mAllocated=newcount;
+ // Have to allocate new data.
+ data_t<> *newdata=allocate(newsize, 0);
+ newdata->copies=1;
+ newdata->length=newsize;
+ digit_t *s=olddata->magnitude, *se=s+olddata->length,
+ *t=newdata->magnitude, *te=t+newdata->length;
+ while (s!=se) *t++ = *s++;
+ while (t < te) *t++ = 0;
+
+ if (--olddata->copies == 0) deallocate(olddata);
+ return newdata;
}
}
-void data_t::copy(const data_t *c, size_t extraDigits) {
- alloc(c->mLength+extraDigits);
-
- mLength=c->mLength;
- if (c->mLength==1) *digits = *c->digits;
- else memcpy(digits, c->digits, mLength*sizeof(digit_t));
-
- mIsNegative=c->mIsNegative;
-
- // Deliberately doesn't call skipLeadingZeros().
-}
-
-void data_t::zero(digit_t *p, size_t count) {
- digit_t *pe=p+count;
- while (p<pe) *p++=0;
-}
-
-void data_t::invert() {
- assert(mCopies==1);
-
- mIsNegative=!mIsNegative;
-
- digit_t *d=digits, *e=d+mLength;
- while (d<e) {
- *d=static_cast<digit_t>(digit_overflowbit - 1 - *d);
- ++d;
- }
-
- d=digits;
- while (d<e) {
- doubledigit_t w=(*d)+1;
- (*d++)=static_cast<digit_t>(w);
- if (w<digit_overflowbit) break;
- }
-
- skipLeadingZeros();
-}
-
-void data_t::negate() {
- assert(mCopies==1);
-
- // If it's zero, don't change the sign
- if (mLength>1 || digits[0]!=0) mIsNegative=!mIsNegative;
-}
-
-void data_t::add(const data_t& addend) {
- assert(mCopies==1);
- assert(mLength >= addend.mLength);
-
- // The answer to any addition problem contains, at most, one digit more
- // than the largest addend.
- realloc(mLength+1);
-
- // Now add the digits, starting at the least-significant digit.
- digit_t carry=0;
- size_t x=0;
- for (; x<addend.mLength; ++x) {
- doubledigit_t t=doubledigit_t(digits[x])+addend.digits[x]+carry;
- if (t>=digit_overflowbit) { carry=1; t-=digit_overflowbit; } else carry=0;
- digits[x]=static_cast<digit_t>(t);
- }
-
- while (carry) {
- doubledigit_t t=doubledigit_t(digits[x])+1;
- if (t>=digit_overflowbit) { carry=1; t-=digit_overflowbit; } else carry=0;
- digits[x]=static_cast<digit_t>(t);
- ++x;
- }
-
- skipLeadingZeros();
-}
-
-void data_t::subtract(const data_t& subtrahend) {
- assert(mCopies==1);
- assert(mLength >= subtrahend.mLength);
-
- // For subtraction, the answer will always be less than or equal to the
- // size of the longest operand, so we've already got enough room.
-
- // Now subtract the digits, starting at the least-significant one.
- size_t x;
- int borrow=0;
- doubledigit_t t;
- for (x=0; x<subtrahend.mLength; ++x) {
- t=(digits[x]+digit_overflowbit)-subtrahend.digits[x]-borrow;
- if (t<digit_overflowbit) borrow=1; else { borrow=0; t-=digit_overflowbit; }
- digits[x]=static_cast<digit_t>(t);
- }
-
- for (; x<mLength && borrow; ++x) {
- t=(digits[x]+digit_overflowbit)-borrow;
- if (t<digit_overflowbit) borrow=1; else { borrow=0; t-=digit_overflowbit; }
- digits[x]=static_cast<digit_t>(t);
+data_t<> *duplicate(data_t<> *olddata, size_t extra) {
+ data_t<> *r = allocate(olddata->length+extra, 0);
+ r->length = olddata->length;
+ r->copies=1;
+
+ digit_t *s = olddata->magnitude, *se = s + olddata->length,
+ *t = r->magnitude, *te = t + olddata->length + extra;
+ while (s!=se) *t++ = *s++;
+ while (t < te) *t++ = 0;
+
+ if (olddata && --olddata->copies == 0) deallocate(olddata);
+ return r;
+}
+
+data_t<> *duplicate(data_t<> *olddata, data_t<> *data_to_copy, size_t extra) {
+ if (!olddata || olddata->copies > 1 || data_to_copy->length + extra >
+ olddata->max_length)
+ {
+ data_t<> *r = allocate(data_to_copy->length+extra, 0);
+ r->length = data_to_copy->length + extra;
+ digit_t *s = data_to_copy->magnitude, *se = s + data_to_copy->length,
+ *t = r->magnitude, *te = t + r->length;
+ while (s!=se) *t++ = *s++;
+ while (t < te) *t++ = 0;
+ r->copies=1;
+ if (olddata && --olddata->copies == 0) deallocate(olddata);
+ return r;
+ } else {
+ data_t<> *r = olddata;
+ digit_t *s = data_to_copy->magnitude, *se = s + data_to_copy->length,
+ *t = r->magnitude, *te = t + r->length + extra;
+ while (s != se) *t++ = *s++;
+ while (t < te) *t++ = 0;
+ r->length = data_to_copy->length;
+ return r;
}
-
- if (borrow) negate();
- skipLeadingZeros();
}
-void data_t::shift_left(size_t byBits) {
- assert(mCopies==1);
- assert(byBits>0);
-
- size_t bytes=byBits / bits_per_digit, bits=byBits % bits_per_digit;
- size_t oldLength=mLength;
-
- realloc(mLength+bytes+1);
-
- if (bits != 0) {
- // Handle both bits and bytes in one pass
- digit_t *s=digits+oldLength-1, *t=s+bytes+1;
-
- *t-- = *s >> (bits_per_digit - bits);
- while (s > digits) {
- *t = (*s-- << bits);
- *t-- |= (*s >> (bits_per_digit - bits));
- }
- *t = (*s << bits);
+void deallocate(data_t<> *data) {
+ digit_t *digits=reinterpret_cast<digit_t*>(data);
- if (bytes != 0) memset(digits, 0, sizeof(digit_t) * bytes);
- } else if (bytes != 0) {
- memmove(digits+bytes, digits, sizeof(digit_t) * oldLength);
- memset(digits, 0, sizeof(digit_t) * bytes);
- }
- skipLeadingZeros();
-}
+ #ifdef XINT_SECURE
+ digit_t *p = digits, *pe = p + data->max_length + datasize;
+ while (p != pe) *p++ = 0;
+ #endif
-void data_t::shift_right(size_t byBits) {
- assert(mCopies==1);
- assert(byBits>0);
-
- size_t bytes=byBits / bits_per_digit, bits=byBits % bits_per_digit,
- bits2 = bits_per_digit - bits;
-
- if (bytes >= mLength) {
- // Right-shift it into oblivion.
- mLength=1;
- *digits=0;
- } else if (bits != 0) {
- // Handle both bits and bytes in one pass
- digit_t *t=digits, *s=digits+bytes, *se=digits+mLength-1;
- while (s!=se) {
- *t = (*s++ >> bits);
- *t++ |= (*s << bits2);
- }
- *t = (*s >> bits);
- if (bytes != 0) {
- memset(digits+mLength-bytes, 0, sizeof(digit_t) * bytes);
- mLength-=bytes;
- }
- skipLeadingZeros();
- } else if (bytes != 0) {
- memmove(digits, digits + bytes, sizeof(digit_t) * (mLength - bytes));
- memset(digits + mLength - bytes, 0, sizeof(digit_t) * bytes);
- mLength-=bytes;
- skipLeadingZeros();
- }
+ delete[] digits;
}
} // namespace detail
Deleted: sandbox/xint/src/exception_blocker.cpp
==============================================================================
--- sandbox/xint/src/exception_blocker.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,110 +0,0 @@
-
-/*
- The Extended Integer (XInt) Library
- A fast, portable C++ library for multi-precision integer math
- Copyright 2010 by Chad Nelson
-
- Distributed under the Boost Software License, Version 1.0.
- See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt
-
- See http://www.boost.org/libs/xint for library home page.
-*/
-
-/*! \file
- \brief Contains the definitions for the exception-blocker classes and
- functions.
-*/
-
-#include "../boost/xint/xint.hpp"
-
-#ifdef XINT_THREADSAFE
- #include <boost/thread.hpp>
-#endif
-
-namespace boost {
-namespace xint {
-namespace {
-
-#ifdef XINT_THREADSAFE
- boost::thread_specific_ptr<bool> allowed;
-#else
- bool allowed=true;
-#endif
-
-struct EBlockerToken: public detail::token {
- #ifdef XINT_THREADSAFE
- EBlockerToken(bool newAllowState) {
- if (allowed.get()==0) allowed.reset(new bool(true));
- mOldState=*allowed;
- *allowed=newAllowState;
- }
- ~EBlockerToken() { *allowed=mOldState; }
- #else
- EBlockerToken(bool newAllowState): mOldState(allowed) {
- allowed=newAllowState; }
- ~EBlockerToken() { allowed=mOldState; }
- #endif
-
- bool mOldState;
-};
-
-} // namespace
-
-/*! \brief Query whether exceptions are currently allowed or blocked.
-
-\returns \c true if exceptions are currently allowed (the default state), \c
-false if they're blocked.
-
-\remarks
-When the library is compiled for \link threadsafe thread-safe operation\endlink,
-exceptions are blocked or allowed on a per-thread basis. Otherwise they
-are blocked or allowed globally.
-*/
-bool exceptions_allowed() {
- #ifdef XINT_THREADSAFE
- // Defaults to true
- return (allowed.get()==0 || *allowed==true);
- #else
- return allowed;
- #endif
-}
-
-/*! \brief Temporarily prevent the library from throwing blockable exceptions.
-
-\returns An xint::token. Until this token is destroyed, blockable exceptions are
-blocked, unless explicitly re-enabled.
-
-\remarks
-When the library is compiled for \link threadsafe thread-safe operation\endlink,
-exceptions are blocked or allowed on a per-thread basis. Otherwise they are
-blocked or allowed globally.
-
-\see \ref exceptions
-*/
-token block_exceptions() {
- return token(new EBlockerToken(false));
-}
-
-/*! \brief Temprarily counteract an xint::block_exceptions token to allow all
- exceptions.
-
-\returns An xint::token. Until this token is destroyed, blockable exceptions can
-be thrown, unless explicitly re-blocked.
-
-\note
-Exceptions are allowed by default.
-
-\remarks
-When the library is compiled for \link threadsafe thread-safe operation\endlink,
-exceptions are blocked or allowed on a per-thread basis. Otherwise they are
-blocked or allowed globally.
-
-\see \ref exceptions
-*/
-token allow_exceptions() {
- return token(new EBlockerToken(true));
-}
-
-} // namespace xint
-} // namespace boost
Modified: sandbox/xint/src/gcd.cpp
==============================================================================
--- sandbox/xint/src/gcd.cpp (original)
+++ sandbox/xint/src/gcd.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -21,7 +21,6 @@
namespace boost {
namespace xint {
-namespace core {
namespace {
struct gcd_core {
@@ -103,12 +102,12 @@
\returns The modular inverse of \c n in \c m. If \c n has no modular inverse in
\c m, returns zero.
-\exception xint::invalid_modulus if the modulus is less than one.
+\exception exceptions::invalid_modulus if the modulus is less than one.
*/
integer invmod(const integer& n, const integer& m) {
// Calculates the modular inverse of n mod m, or (n^(-1)) mod m
// Defined as b, where n*b corresponds to 1 (mod m)
- if (m < integer::one()) throw invalid_modulus();
+ if (m < integer::one()) throw exceptions::invalid_modulus();
int sign=n.sign();
if (sign==0) {
@@ -132,6 +131,5 @@
return core.u1;
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/integer.cpp
==============================================================================
--- sandbox/xint/src/integer.cpp (original)
+++ sandbox/xint/src/integer.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -16,71 +16,18 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
-
-#ifdef XINT_THREADSAFE
- #define XINT_DISABLE_COPY_ON_WRITE
-#endif
+#include <memory> // for auto_ptr
namespace boost {
namespace xint {
-namespace core {
namespace {
std::auto_ptr<integer> cZero, cOne;
}
-////////////////////////////////////////////////////////////////////////////////
-// The base_integer class
-
-base_integer::~base_integer() {
- if (data && data->detach()) delete data;
-}
-
-detail::digit_t base_integer::_get_digit(size_t index) const {
- return data->digits[index];
-}
-
-detail::digit_t base_integer::_get_digit(size_t index, bool) const {
- if (index >= data->mLength) return 0;
- return data->digits[index];
-}
-
-size_t base_integer::_get_length() const {
- return data->mLength;
-}
-
-void base_integer::_attach(detail::data_t *new_data) {
- if (data && data->detach()) delete data;
- #ifdef XINT_DISABLE_COPY_ON_WRITE
- if (new_data==0 || new_data->mCopies==0) data=new_data;
- else {
- try {
- data=new detail::data_t(new_data);
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
- }
- #else
- data=new_data;
- #endif
- if (data) data->attach();
-}
-
-void base_integer::_attach(const base_integer& copy) {
- _attach(copy.data);
-}
-
-bool base_integer::_is_unique() const {
- return (!data || data->mCopies==1);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// The core integer class
-
//! \brief Creates a new integer with an initial value of zero.
integer::integer() {
- _init();
+ _attach_0();
}
/*! \brief Creates a copy of an existing integer.
@@ -89,27 +36,27 @@
another Not-a-Number.
\note
-This library can use a \link cow copy-on-write technique\endlink, making
-copying (even of large numbers) a very inexpensive operation.
+This library can use a \ref cow "copy-on-write technique", making copying (even
+of large numbers) a very inexpensive operation.
\overload
*/
integer::integer(const integer& b) {
- _init(b);
+ _attach(b);
}
-/*! \brief Creates an integer from a blockable::integer.
+/*! \brief Creates an integer from a nothrow_integer.
-\param[in] b An existing blockable::integer.
+\param[in] b An existing nothrow_integer.
\note
-This library can use a \link cow copy-on-write technique\endlink, making
-copying (even of large numbers) a very inexpensive operation.
+This library can use a \ref cow "copy-on-write technique", making copying (even
+of large numbers) a very inexpensive operation.
\overload
*/
-integer::integer(const blockable::integer& b) {
- if (b.is_nan()) throw xint::not_a_number();
+integer::integer(const nothrow_integer& b) {
+ if (b.is_nan()) throw exceptions::not_a_number();
_attach(b);
}
@@ -118,14 +65,15 @@
\param[in] str A string representation of a number.
\param[in] base The base of the number, or xint::autobase.
-\exception xint::invalid_base if the base parameter is not between 2 and 36
+\exception exceptions::invalid_base if the base parameter is not between 2 and 36
(inclusive) or the constant xint::autobase.
-\exception xint::invalid_digit if the string contains any digit that cannot be
-part of a number in the specified base, or if there are no valid digits.
+\exception exceptions::invalid_digit if the string contains any digit that cannot
+be part of a number in the specified base, or if there are no valid digits.
\remarks
This will convert a string representation of a number into an integer. See the
-description of the xint::from_string function for details on its behavior.
+description of the \ref xint::from_string "from_string" function for details on
+its behavior.
\par
This is the most common way to initialize values that are too large to fit into
@@ -134,44 +82,11 @@
\overload
*/
integer::integer(const std::string& str, size_t base) {
- _init(from_string(str, base));
-}
-
-void integer::_init(detail::digit_t init) {
- try {
- _attach(new detail::data_t(init));
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
-}
-
-void integer::_init(const integer &c) {
- _attach(c);
-}
-
-void integer::_init(boost::uintmax_t n) {
- try {
- _attach(new detail::data_t(n, true));
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
+ _attach(from_string(str, base));
}
void integer::_make_unique() {
- try {
- if (!_is_unique()) _attach(new detail::data_t(_get_data()));
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
-}
-
-void integer::_set_negative(bool negative) {
- if (_get_data()->mIsNegative != negative) {
- _make_unique();
- detail::data_t *p=_get_data();
- p->mIsNegative=negative;
- p->skipLeadingZeros();
- }
+ _base_make_unique();
}
/*! \brief Tests the lowest bit of \c *this to determine oddness.
@@ -192,12 +107,16 @@
/*! \brief Tests the sign of \c *this.
+\param[in] signed_zero If \c false (the default value), returns zero if \c *this
+is zero. If \c true, returns 1 or -1 on a zero \c *this as well. Primarily used
+to identify a \ref zero "negative zero".
+
\returns -1 if \c *this is negative, 0 if it's zero, or 1 if it's greater than
zero.
*/
-int integer::sign() const {
- if (_get_length()==1 && _get_digit(0)==0) return 0;
- else return (_get_data()->mIsNegative ? -1 : 1);
+int integer::sign(bool signed_zero) const {
+ if (!signed_zero && _is_zero()) return 0;
+ else return (_get_negative() ? -1 : 1);
}
/*! \brief Tells you roughly how large an integer is.
@@ -216,7 +135,7 @@
{
// Fast in-place add
_make_unique();
- _get_data()->add(addend._get_data());
+ _add(addend);
} else {
// This works for all cases
*this=add(*this, addend);
@@ -228,7 +147,7 @@
if (sign() >= 0 && subtrahend.sign() >= 0 && *this >= subtrahend) {
// Fast in-place subtract
_make_unique();
- _get_data()->subtract(subtrahend._get_data());
+ _subtract(subtrahend);
} else {
// This works for all cases
*this=subtract(*this, subtrahend);
@@ -259,7 +178,7 @@
integer& integer::operator<<=(size_t shift) {
if (shift>0) {
_make_unique();
- _get_data()->shift_left(shift);
+ _shift_left(shift);
}
return *this;
}
@@ -267,7 +186,7 @@
integer& integer::operator>>=(size_t shift) {
if (shift>0) {
_make_unique();
- _get_data()->shift_right(shift);
+ _shift_right(shift);
}
return *this;
}
@@ -282,6 +201,5 @@
return *cOne;
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/misc.cpp
==============================================================================
--- sandbox/xint/src/misc.cpp (original)
+++ sandbox/xint/src/misc.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -47,7 +47,6 @@
#endif
}
-namespace core {
/*! \brief Get the log<sub>2</sub> value of an integer.
\param[in] n The integer to operate on.
@@ -71,6 +70,6 @@
}
return r;
}
-} // namespace core
+
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/modular.cpp
==============================================================================
--- sandbox/xint/src/modular.cpp (original)
+++ sandbox/xint/src/modular.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -19,11 +19,10 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_monty.hpp"
+#include "../boost/xint/monty.hpp"
namespace boost {
namespace xint {
-namespace core {
/*! \brief Get the remainder after dividing a number by another.
@@ -80,7 +79,7 @@
\returns The result of \c pow(n, \c exponent) % \c modulus.
-\exception xint::invalid_modulus if the modulus is less than one.
+\exception exceptions::invalid_modulus if the modulus is less than one.
\remarks
Because this function keeps the intermediate results small, it is far faster
@@ -94,7 +93,7 @@
integer powmod(const integer& n, const integer& e, const integer& m, bool
noMontgomery)
{
- if (m < integer::one()) throw invalid_modulus();
+ if (m < integer::one()) throw exceptions::invalid_modulus();
if (e.sign()==0) return integer::one();
bool neg=(n.sign() < 0 && e.odd());
@@ -129,6 +128,5 @@
return answer;
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/monty.cpp
==============================================================================
--- sandbox/xint/src/monty.cpp (original)
+++ sandbox/xint/src/monty.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -19,7 +19,6 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
#include <boost/scoped_array.hpp>
@@ -27,7 +26,6 @@
namespace boost {
namespace xint {
-namespace core {
using namespace detail;
@@ -46,7 +44,7 @@
internal representation. Used internally.
*/
integer montgomeryR(const integer& n) {
- return integer::one() << (bits_per_digit * n._get_data()->mLength);
+ return integer::one() << (bits_per_digit * n._get_length());
}
//! Returns the Montgomery form of a number. Used for testing.
@@ -233,8 +231,8 @@
const TUTable &tuTable(TUTable::get());
if (e.sign()==0) return integer::one();
- if (n.even()) throw invalid_modulus("montgomeryPowerMod requires an odd "
- "modulus");
+ if (n.even()) throw exceptions::invalid_modulus("montgomeryPowerMod "
+ "requires an odd modulus");
// Precalculate some values
const size_t k(mostEfficientK(e));
@@ -279,6 +277,5 @@
return montgomeryMultiplyMod(pp, integer::one(), n, nPrime0);
}
-} // namespace core
} // namespace xint
} // namespace boost
Added: sandbox/xint/src/nothrow_bit_manipulations.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_bit_manipulations.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,134 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the bit-manipulation functions for the \c nothrow_integer
+ type.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+
+/*! \copydoc xint::getbit
+
+\note Returns false instead of throwing.
+*/
+bool getbit(const nothrow_integer& n, size_t bit) {
+ try {
+ return getbit(xint::integer(n), bit);
+ } catch (std::exception&) {
+ return false;
+ }
+}
+
+//! \copydoc xint::setbit
+void setbit(nothrow_integer& n, size_t bit) {
+ try {
+ xint::integer nn(n);
+ setbit(nn, bit);
+ n=nothrow_integer(nn);
+ } catch (std::exception&) {
+ // Do nothing
+ }
+}
+
+//! \copydoc xint::clearbit
+void clearbit(nothrow_integer& n, size_t bit) {
+ try {
+ xint::integer nn(n);
+ clearbit(nn, bit);
+ n=nothrow_integer(nn);
+ } catch (std::exception&) {
+ // Do nothing
+ }
+}
+
+/*! \copydoc xint::lowestbit
+
+\note Returns zero instead of throwing.
+*/
+size_t lowestbit(const nothrow_integer& n, size_t valueIfZero) {
+ try {
+ return lowestbit(xint::integer(n), valueIfZero);
+ } catch (std::exception&) {
+ return 0;
+ }
+}
+
+/*! \copydoc xint::highestbit
+
+\note Returns zero instead of throwing.
+*/
+size_t highestbit(const nothrow_integer& n, size_t valueIfZero) {
+ try {
+ return highestbit(xint::integer(n), valueIfZero);
+ } catch (std::exception&) {
+ return 0;
+ }
+}
+
+//! \copydoc xint::bitwise_and
+nothrow_integer bitwise_and(const nothrow_integer& n1, const nothrow_integer& n2) {
+ try {
+ return nothrow_integer(bitwise_and(xint::integer(n1), xint::integer(n2)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::bitwise_or
+nothrow_integer bitwise_or(const nothrow_integer& n1, const nothrow_integer& n2) {
+ try {
+ return nothrow_integer(bitwise_or(xint::integer(n1), xint::integer(n2)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::bitwise_xor
+nothrow_integer bitwise_xor(const nothrow_integer& n1, const nothrow_integer& n2) {
+ try {
+ return nothrow_integer(bitwise_xor(xint::integer(n1), xint::integer(n2)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::shift
+nothrow_integer shift(const nothrow_integer& n, int byBits) {
+ if (byBits > 0) return shift_left(n, byBits);
+ else return shift_right(n, -byBits);
+}
+
+//! \copydoc xint::shift_left
+nothrow_integer shift_left(const nothrow_integer& n, size_t byBits) {
+ try {
+ return nothrow_integer(shift_left(xint::integer(n), byBits));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::shift_right
+nothrow_integer shift_right(const nothrow_integer& n, size_t byBits) {
+ try {
+ return nothrow_integer(shift_right(xint::integer(n), byBits));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+} // namespace xint
+} // namespace boost
Copied: sandbox/xint/src/nothrow_compare.cpp (from r61200, /sandbox/xint/src/blockable_compare.cpp)
==============================================================================
--- /sandbox/xint/src/blockable_compare.cpp (original)
+++ sandbox/xint/src/nothrow_compare.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -12,63 +12,58 @@
*/
/*! \file
- \brief Contains the the compare function and comparison operators for
- blockable integers.
+ \brief Contains the the compare function and comparison operators for the \c
+ nothrow_integer type.
*/
#include "../boost/xint/xint.hpp"
namespace boost {
namespace xint {
-namespace blockable {
-/*! \copydoc core::compare
+/*! \copydoc xint::compare(const integer&, const integer&, bool)
-\note If exceptions are blocked, returns 0 instead of throwing.
+\note Returns 0 instead of throwing.
*/
-int compare(const integer &b1, const integer &b2, bool ignoresign) {
+int compare(const nothrow_integer &b1, const nothrow_integer &b2, bool ignoresign) {
try {
- return compare(core::integer(b1), core::integer(b2));
+ return compare(xint::integer(b1), xint::integer(b2));
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
+ return 0;
}
}
namespace {
template <typename T>
-bool cmp(const integer &num1, const integer &num2, const T& t) {
+bool cmp(const nothrow_integer &num1, const nothrow_integer &num2, const T& t) {
try {
- return t(compare(core::integer(num1), core::integer(num2)), 0);
+ return t(compare(xint::integer(num1), xint::integer(num2)), 0);
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return false;
+ return false;
}
}
} // namespace
-bool operator!(const integer &num1) {
+bool operator!(const nothrow_integer &num1) {
try {
- return operator!(core::integer(num1));
+ return operator!(xint::integer(num1));
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return false;
+ return false;
}
}
-bool operator==(const integer &num1, const integer &num2) {
+bool operator==(const nothrow_integer &num1, const nothrow_integer &num2) {
return cmp(num1, num2, std::equal_to<int>()); }
-bool operator!=(const integer& num1, const integer& num2) {
+bool operator!=(const nothrow_integer& num1, const nothrow_integer& num2) {
return cmp(num1, num2, std::not_equal_to<int>()); }
-bool operator<(const integer& num1, const integer& num2) {
+bool operator<(const nothrow_integer& num1, const nothrow_integer& num2) {
return cmp(num1, num2, std::less<int>()); }
-bool operator>(const integer& num1, const integer& num2) {
+bool operator>(const nothrow_integer& num1, const nothrow_integer& num2) {
return cmp(num1, num2, std::greater<int>()); }
-bool operator<=(const integer& num1, const integer& num2) {
+bool operator<=(const nothrow_integer& num1, const nothrow_integer& num2) {
return cmp(num1, num2, std::less_equal<int>()); }
-bool operator>=(const integer& num1, const integer& num2) {
+bool operator>=(const nothrow_integer& num1, const nothrow_integer& num2) {
return cmp(num1, num2, std::greater_equal<int>()); }
-} // namespace blockable
} // namespace xint
} // namespace boost
Added: sandbox/xint/src/nothrow_convert.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_convert.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,78 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the conversion functions for the \c nothrow_integer type.
+
+ Note that the xint::to<T> function is not here, because it's a template
+ function and must be defined in a header file.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+
+using namespace detail;
+
+/*! \copydoc xint::to_string(const integer&, size_t, bool)
+
+\note Returns an empty std::string instead of throwing.
+
+\par
+If \c n is Not-a-Number, returns the string \c \#NaN#.
+*/
+std::string to_string(const nothrow_integer& n, size_t base, bool uppercase) {
+ try {
+ return to_string(xint::integer(n), base, uppercase);
+ } catch (std::exception&) {
+ return std::string();
+ }
+}
+
+/*! \copydoc xint::from_string
+
+\note If the string is \c \#NaN#, then it will return \ref nan "Not-a-Number".
+*/
+nothrow_integer nothrow_from_string(const std::string& str, size_t base) {
+ try {
+ if (str==detail::nan_text) return nothrow_integer::nan();
+ return nothrow_integer(xint::from_string(str, base));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::from_binary
+nothrow_integer nothrow_from_binary(const std::string& str) {
+ try {
+ return nothrow_integer(xint::from_binary(str));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+/*! \copydoc xint::to_binary(const integer&)
+
+\par Returns an empty std::string instead of throwing.
+*/
+std::string to_binary(const nothrow_integer& n) {
+ try {
+ return to_binary(xint::integer(n));
+ } catch (std::exception&) {
+ return std::string();
+ }
+}
+
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/nothrow_gcd.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_gcd.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,43 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Greatest Common Denominator and Least Common Multple for the \c
+ nothrow_integer type.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+
+//! \copydoc xint::gcd(const integer&, const integer&)
+nothrow_integer gcd(const nothrow_integer& num1, const nothrow_integer& num2) {
+ try {
+ return nothrow_integer(gcd(xint::integer(num1), xint::integer(num2)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::lcm(const integer&, const integer&)
+nothrow_integer lcm(const nothrow_integer& num1, const nothrow_integer& num2) {
+ try {
+ return nothrow_integer(lcm(xint::integer(num1), xint::integer(num2)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/nothrow_integer.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_integer.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,212 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the \c nothrow_integer member functions.
+*/
+
+#include "../boost/xint/xint.hpp"
+#include <memory> // for auto_ptr
+
+namespace boost {
+namespace xint {
+
+const std::string detail::nan_text("#NaN#");
+
+////////////////////////////////////////////////////////////////////////////////
+// The nothrow_integer class
+
+namespace {
+ std::auto_ptr<nothrow_integer> cZero, cOne, cNaN;
+}
+
+//! \copydoc xint::integer::integer()
+nothrow_integer::nothrow_integer() {
+ _attach_0();
+}
+
+//! \copydoc integer::integer(const integer&)
+nothrow_integer::nothrow_integer(const nothrow_integer& b) {
+ try {
+ if (!b.is_nan()) _attach(b);
+ } catch (std::exception&) {
+ // Do nothing, automatically sets to Not-a-Number
+ }
+}
+
+/*! \brief Creates a nothrow_integer from an integer.
+
+\param[in] b An existing integer.
+
+\note
+This library can use a \ref cow "copy-on-write technique", making copying (even
+of large numbers) a very inexpensive operation.
+
+\overload
+*/
+nothrow_integer::nothrow_integer(const integer& b) {
+ try {
+ _attach(b);
+ } catch (std::exception&) {
+ // Do nothing, automatically sets to Not-a-Number
+ }
+}
+
+//! \copydoc xint::integer::integer(const std::string&, size_t)
+nothrow_integer::nothrow_integer(const std::string& str, size_t base) {
+ try {
+ _attach(from_string(str, base));
+ } catch (std::exception&) {
+ // Do nothing, automatically sets to Not-a-Number
+ }
+}
+
+/*! \copydoc xint::integer::odd
+
+\note Returns \c false instead of throwing.
+*/
+bool nothrow_integer::odd() const {
+ if (is_nan()) return false;
+ return ((_get_digit(0) & 0x01)==1);
+}
+
+/*! \copydoc xint::integer::even
+
+\note Returns \c false instead of throwing.
+*/
+bool nothrow_integer::even() const {
+ if (is_nan()) return false;
+ return ((_get_digit(0) & 0x01)==0);
+}
+
+/*! \copydoc xint::integer::sign
+
+\note Returns zero instead of throwing.
+*/
+int nothrow_integer::sign(bool signed_zero) const {
+ if (is_nan()) return 0;
+ if (!signed_zero && _is_zero()) return 0;
+ else return (_get_negative() ? -1 : 1);
+}
+
+/*! \copydoc xint::integer::hex_digits
+
+\note Returns zero instead of throwing.
+*/
+size_t nothrow_integer::hex_digits() const {
+ try {
+ return xint::nothrow_integer(*this).hex_digits();
+ } catch (std::exception&) {
+ return 0;
+ }
+}
+
+/*! \brief Tests \c *this for Not-a-Number.
+
+\returns \c true if \c *this is Not-a-Number, otherwise \c false.
+
+\see \ref nan
+*/
+bool nothrow_integer::is_nan() const {
+ return _is_nan();
+}
+
+nothrow_integer& nothrow_integer::operator+=(const nothrow_integer& addend) {
+ try {
+ *this=nothrow_integer(xint::nothrow_integer(*this).operator+=(xint::nothrow_integer(addend)));
+ } catch (std::exception&) {
+ *this=nothrow_integer::nan();
+ }
+ return *this;
+}
+
+nothrow_integer& nothrow_integer::operator-=(const nothrow_integer& subtrahend) {
+ try {
+ *this=nothrow_integer(xint::nothrow_integer(*this).operator-=(xint::nothrow_integer(subtrahend)));
+ } catch (std::exception&) {
+ *this=nothrow_integer::nan();
+ }
+ return *this;
+}
+
+nothrow_integer& nothrow_integer::operator=(const nothrow_integer &c) {
+ try {
+ _attach(c);
+ } catch (std::exception&) {
+ _attach(0);
+ }
+ return *this;
+}
+
+nothrow_integer& nothrow_integer::operator*=(const nothrow_integer& b) { *this=multiply(*this, b); return *this; }
+nothrow_integer& nothrow_integer::operator/=(const nothrow_integer& b) { *this=divide(*this, b); return *this; }
+nothrow_integer& nothrow_integer::operator%=(const nothrow_integer& b) { *this=mod(*this, b); return *this; }
+
+nothrow_integer& nothrow_integer::operator++() { *this += one(); return *this; }
+nothrow_integer& nothrow_integer::operator--() { *this -= one(); return *this; }
+nothrow_integer nothrow_integer::operator++(int) { nothrow_integer s=*this; *this += one(); return s; }
+nothrow_integer nothrow_integer::operator--(int) { nothrow_integer s=*this; *this -= one(); return s; }
+
+nothrow_integer nothrow_integer::operator<<(size_t shift) const { return shift_left(*this, shift); }
+nothrow_integer nothrow_integer::operator>>(size_t shift) const { return shift_right(*this, shift); }
+nothrow_integer& nothrow_integer::operator&=(const nothrow_integer& n) { *this=bitwise_and(*this, n); return *this; }
+nothrow_integer& nothrow_integer::operator|=(const nothrow_integer& n) { *this=bitwise_or(*this, n); return *this; }
+nothrow_integer& nothrow_integer::operator^=(const nothrow_integer& n) { *this=bitwise_xor(*this, n); return *this; }
+
+nothrow_integer& nothrow_integer::operator<<=(size_t shift) {
+ try {
+ *this=nothrow_integer(xint::nothrow_integer(*this).operator<<=(shift));
+ } catch (std::exception&) {
+ *this=nothrow_integer::nan();
+ }
+ return *this;
+}
+
+nothrow_integer& nothrow_integer::operator>>=(size_t shift) {
+ try {
+ *this=nothrow_integer(xint::nothrow_integer(*this).operator>>=(shift));
+ } catch (std::exception&) {
+ *this=nothrow_integer::nan();
+ }
+ return *this;
+}
+
+const nothrow_integer& nothrow_integer::zero() {
+ if (cZero.get()==0) cZero.reset(new nothrow_integer(xint::nothrow_integer::zero()));
+ return *cZero;
+}
+
+const nothrow_integer& nothrow_integer::one() {
+ if (cOne.get()==0) cOne.reset(new nothrow_integer(xint::nothrow_integer::one()));
+ return *cOne;
+}
+
+const nothrow_integer& nothrow_integer::nan() {
+ if (cNaN.get()==0) {
+ nothrow_integer *n=new nothrow_integer();
+ n->_attach(0);
+ cNaN.reset(n);
+ }
+ return *cNaN;
+}
+
+void nothrow_integer::_make_unique() {
+ try {
+ _base_make_unique();
+ } catch (std::exception&) {
+ _attach(0); // Turns it into a Not-a-Number.
+ }
+}
+
+} // namespace xint
+} // namespace boost
Copied: sandbox/xint/src/nothrow_misc.cpp (from r61200, /sandbox/xint/src/blockable_misc.cpp)
==============================================================================
--- /sandbox/xint/src/blockable_misc.cpp (original)
+++ sandbox/xint/src/nothrow_misc.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -12,29 +12,26 @@
*/
/*! \file
- \brief Functions for blockable integers that don't fall into any other
- category.
+ \brief Functions for the \c nothrow_integer type that don't fall into any
+ other category.
*/
#include "../boost/xint/xint.hpp"
namespace boost {
namespace xint {
-namespace blockable {
-/*! \copydoc core::log2
+/*! \copydoc xint::log2(const integer&)
-\note If exceptions are blocked, returns 0 instead of throwing.
+\note Returns 0 instead of throwing.
*/
-size_t log2(const integer& n) {
+size_t log2(const nothrow_integer& n) {
try {
- return log2(core::integer(n));
+ return log2(xint::integer(n));
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
+ return 0;
}
}
-} // namespace blockable
} // namespace xint
} // namespace boost
Added: sandbox/xint/src/nothrow_modular.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_modular.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,77 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the basic modular math functions for
+ the \c nothrow_integer type.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+
+//! \copydoc xint::mod(const integer&, const integer&)
+nothrow_integer mod(const nothrow_integer& n, const nothrow_integer& m) {
+ try {
+ return nothrow_integer(mod(xint::integer(n), xint::integer(m)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::mulmod(const integer&, const integer&, const integer&)
+nothrow_integer mulmod(const nothrow_integer& n, const nothrow_integer& by, const nothrow_integer& m) {
+ try {
+ return nothrow_integer(mod(xint::integer(n) * xint::integer(by),
+ xint::integer(m)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::sqrmod(const integer&, const integer&)
+nothrow_integer sqrmod(const nothrow_integer& n, const nothrow_integer& m) {
+ try {
+ return nothrow_integer(mod(sqr(xint::integer(n)), xint::integer(m)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::powmod(const integer&, const integer&, const integer&, bool)
+nothrow_integer powmod(const nothrow_integer& n, const nothrow_integer& e, const nothrow_integer& m, bool
+ noMontgomery)
+{
+ try {
+ return nothrow_integer(powmod(xint::integer(n), xint::integer(e),
+ xint::integer(m), noMontgomery));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+/*! \copydoc xint::invmod(const integer&, const integer&)
+
+\note Returns zero instead of throwing.
+*/
+nothrow_integer invmod(const nothrow_integer& n, const nothrow_integer& m) {
+ try {
+ return nothrow_integer(invmod(xint::integer(n), xint::integer(m)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/nothrow_operators.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_operators.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,36 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the basic math operators for the
+ \c nothrow_integer type.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+
+const nothrow_integer& operator+(const nothrow_integer& a) { return a; }
+nothrow_integer operator-(const nothrow_integer& a) { return negate(a); }
+nothrow_integer operator+(const nothrow_integer& num1, const nothrow_integer& num2) { return add(num1, num2); }
+nothrow_integer operator-(const nothrow_integer& num1, const nothrow_integer& num2) { return subtract(num1, num2); }
+nothrow_integer operator*(const nothrow_integer& num1, const nothrow_integer& num2) { return multiply(num1, num2); }
+nothrow_integer operator/(const nothrow_integer& num1, const nothrow_integer& num2) { return divide(num1, num2); }
+nothrow_integer operator%(const nothrow_integer& num1, const nothrow_integer& num2) { return mod(num1, num2); }
+nothrow_integer operator&(const nothrow_integer& n1, const nothrow_integer& n2) { return bitwise_and(n1, n2); }
+nothrow_integer operator|(const nothrow_integer& n1, const nothrow_integer& n2) { return bitwise_or(n1, n2); }
+nothrow_integer operator^(const nothrow_integer& n1, const nothrow_integer& n2) { return bitwise_xor(n1, n2); }
+
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/nothrow_powers.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_powers.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,59 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for \c nothrow_integer functions related to
+ powers of a number.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+
+//! \copydoc xint::pow2
+nothrow_integer nothrow_pow2(size_t e) {
+ nothrow_integer r;
+ setbit(r, e);
+ return r;
+}
+
+//! \copydoc xint::sqr(const integer&)
+nothrow_integer sqr(const nothrow_integer& n) {
+ try {
+ return nothrow_integer(sqr(xint::integer(n)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::pow(const integer&, const integer&)
+nothrow_integer pow(const nothrow_integer& n, const nothrow_integer& e) {
+ try {
+ return nothrow_integer(pow(xint::integer(n), xint::integer(e)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::factorial
+nothrow_integer nothrow_factorial(size_t n) {
+ try {
+ return nothrow_integer(xint::factorial(n));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+} // namespace xint
+} // namespace boost
Copied: sandbox/xint/src/nothrow_primes.cpp (from r61200, /sandbox/xint/src/blockable_primes.cpp)
==============================================================================
--- /sandbox/xint/src/blockable_primes.cpp (original)
+++ sandbox/xint/src/nothrow_primes.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -13,38 +13,34 @@
/*! \file
\brief Contains the definitions for functions related to prime numbers for
- blockable integers.
+ the \c nothrow_integer type.
*/
#include "../boost/xint/xint.hpp"
namespace boost {
namespace xint {
-namespace blockable {
-/*! \copydoc core::is_prime
+/*! \copydoc xint::is_prime(const integer&, callback_t)
-\note If exceptions are blocked, returns -1 instead of throwing.
+\note Returns -1 instead of throwing.
*/
-int is_prime(const integer& n, callback_t callback) {
+int is_prime(const nothrow_integer& n, callback_t callback) {
try {
- return is_prime(core::integer(n), callback);
+ return is_prime(xint::integer(n), callback);
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return -1;
+ return -1;
}
}
-//! \copydoc core::random_prime
-integer random_prime(size_t size_in_bits, callback_t callback) {
+//! \copydoc xint::random_prime
+nothrow_integer nothrow_random_prime(size_t size_in_bits, callback_t callback) {
try {
- return integer(core::random_prime(size_in_bits, callback));
+ return nothrow_integer(xint::random_prime(size_in_bits, callback));
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
+ return nothrow_integer::nan();
}
}
-} // namespace blockable
} // namespace xint
} // namespace boost
Added: sandbox/xint/src/nothrow_primitives.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/nothrow_primitives.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,87 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for math primitives for the \c
+ nothrow_integer type.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+
+//! \copydoc xint::abs(const integer&)
+nothrow_integer abs(const nothrow_integer& n) {
+ try {
+ return nothrow_integer(abs(xint::integer(n)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::negate(const integer&)
+nothrow_integer negate(const nothrow_integer& n) {
+ try {
+ return nothrow_integer(negate(xint::integer(n)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::add(const integer&, const integer&)
+nothrow_integer add(const nothrow_integer& n1, const nothrow_integer& n2) {
+ try {
+ return nothrow_integer(add(xint::integer(n1), xint::integer(n2)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::subtract(const integer&, const integer&)
+nothrow_integer subtract(const nothrow_integer& n1, const nothrow_integer& n2) {
+ try {
+ return nothrow_integer(subtract(xint::integer(n1), xint::integer(n2)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::multiply(const integer&, const integer&)
+nothrow_integer multiply(const nothrow_integer& n, const nothrow_integer& by) {
+ try {
+ return nothrow_integer(multiply(xint::integer(n), xint::integer(by)));
+ } catch (std::exception&) {
+ return nothrow_integer::nan();
+ }
+}
+
+//! \copydoc xint::divide(const integer&, const integer&)
+nothrow_integer divide(const nothrow_integer& dividend, const nothrow_integer& divisor) {
+ return divide_r(dividend, divisor).first;
+}
+
+/*! \copydoc xint::divide_r(const integer&, const integer&)
+
+\note Returns an std::pair with two Not-a-Number values instead of throwing.
+*/
+std::pair<nothrow_integer, nothrow_integer> divide_r(const nothrow_integer& d1, const nothrow_integer& d2) {
+ try {
+ return divide_r(xint::integer(d1), xint::integer(d2));
+ } catch (std::exception&) {
+ return std::make_pair(nothrow_integer::nan(), nothrow_integer::nan());
+ }
+}
+
+} // namespace xint
+} // namespace boost
Copied: sandbox/xint/src/nothrow_random.cpp (from r61200, /sandbox/xint/src/blockable_random.cpp)
==============================================================================
--- /sandbox/xint/src/blockable_random.cpp (original)
+++ sandbox/xint/src/nothrow_random.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -12,29 +12,26 @@
*/
/*! \file
- \brief Contains the definitions for the random number functions for
- blockable integers.
+ \brief Contains the definitions for the random number functions for the \c
+ nothrow_integer type.
*/
#include "../boost/xint/xint.hpp"
namespace boost {
namespace xint {
-namespace blockable {
-//! \copydoc core::random_by_size
-integer random_by_size(size_t bits, bool high_bit_on, bool low_bit_on, bool
- can_be_negative)
+//! \copydoc xint::random_by_size
+nothrow_integer nothrow_random_by_size(size_t bits, bool high_bit_on, bool
+ low_bit_on, bool can_be_negative)
{
try {
- return integer(core::random_by_size(bits, high_bit_on, low_bit_on,
- can_be_negative));
+ return nothrow_integer(xint::random_by_size(bits, high_bit_on,
+ low_bit_on, can_be_negative));
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
+ return nothrow_integer::nan();
}
}
-} // namespace blockable
} // namespace xint
} // namespace boost
Copied: sandbox/xint/src/nothrow_roots.cpp (from r61200, /sandbox/xint/src/blockable_roots.cpp)
==============================================================================
--- /sandbox/xint/src/blockable_roots.cpp (original)
+++ sandbox/xint/src/nothrow_roots.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -12,7 +12,7 @@
*/
/*! \file
- \brief Contains the definitions for blockable integer functions related to
+ \brief Contains the definitions for \c nothrow_integer functions related to
roots of a number.
*/
@@ -20,18 +20,15 @@
namespace boost {
namespace xint {
-namespace blockable {
-//! \copydoc core::sqrt
-integer sqrt(const integer& n) {
+//! \copydoc xint::sqrt(const integer&)
+nothrow_integer sqrt(const nothrow_integer& n) {
try {
- return integer(sqrt(core::integer(n)));
+ return nothrow_integer(sqrt(xint::integer(n)));
} catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
+ return nothrow_integer::nan();
}
}
-} // namespace blockable
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/operators.cpp
==============================================================================
--- sandbox/xint/src/operators.cpp (original)
+++ sandbox/xint/src/operators.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -19,7 +19,6 @@
namespace boost {
namespace xint {
-namespace core {
const integer& operator+(const integer& a) { return a; }
integer operator-(const integer& a) { return negate(a); }
integer operator+(const integer& num1, const integer& num2) { return add(num1, num2); }
@@ -30,6 +29,5 @@
integer operator&(const integer& n1, const integer& n2) { return bitwise_and(n1, n2); }
integer operator|(const integer& n1, const integer& n2) { return bitwise_or(n1, n2); }
integer operator^(const integer& n1, const integer& n2) { return bitwise_xor(n1, n2); }
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/powers.cpp
==============================================================================
--- sandbox/xint/src/powers.cpp (original)
+++ sandbox/xint/src/powers.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -16,7 +16,6 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
#include <vector>
@@ -25,7 +24,6 @@
using namespace detail;
-namespace core {
namespace {
bool addOverflow(doubledigit_t &n1, doubledigit_t n2) {
@@ -64,42 +62,43 @@
\todo Rewrite this to eliminate the inefficient addOverflow.
*/
integer sqr(const integer& n) {
- const data_t *ndata=n._get_data();
- std::vector<doubledigit_t> a(ndata->mLength*2+1, 0);
+ const digit_t *ndigits=n._get_digits();
+ size_t nlen=n._get_length();
+ std::vector<doubledigit_t> a(nlen*2+1, 0);
doubledigit_t *adigit=&a[0];
size_t i, j;
integer addend;
- data_t *addenddata=addend._get_data();
- addenddata->alloc(ndata->mLength*2+1);
+ addend._realloc(nlen*2+1);
+ digit_t *adigits=addend._get_digits();
- digit_t *ndigitip=ndata->digits;
- for (i=0; i<ndata->mLength; ++i, ++ndigitip) {
+ const digit_t *ndigitip=ndigits;
+ for (i=0; i<nlen; ++i, ++ndigitip) {
digit_t ndigiti=*ndigitip;
doubledigit_t t=(doubledigit_t(ndigiti) * ndigiti);
- if (addOverflow(adigit[2*i], t)) ++addenddata->digits[2*i+2];
+ if (addOverflow(adigit[2*i], t)) ++adigits[2*i+2];
- for (j=i+1; j<ndata->mLength; ++j) {
- doubledigit_t t=(doubledigit_t(ndata->digits[j]) * ndigiti);
- if (t & doubledigit_hibit) ++addenddata->digits[i+j+2];
+ for (j=i+1; j<nlen; ++j) {
+ doubledigit_t t=(doubledigit_t(ndigits[j]) * ndigiti);
+ if (t & doubledigit_hibit) ++adigits[i+j+2];
t<<=1;
- if (addOverflow(adigit[i+j], t)) ++addenddata->digits[i+j+2];
+ if (addOverflow(adigit[i+j], t)) ++adigits[i+j+2];
}
}
integer answer;
- data_t *answerdata=answer._get_data();
- answerdata->alloc(ndata->mLength*2+1);
+ answer._realloc(nlen*2+1);
doubledigit_t carry=0;
- for (i=0, j=ndata->mLength*2+1; i<j; ++i) {
- if (addOverflow(carry, adigit[i])) ++addenddata->digits[i+2];
- answerdata->digits[i]=digit_t(carry);
+ digit_t *ansdigits=answer._get_digits();
+ for (i=0, j=nlen*2+1; i<j; ++i) {
+ if (addOverflow(carry, adigit[i])) ++adigits[i+2];
+ ansdigits[i]=digit_t(carry);
carry>>=bits_per_digit;
}
- answerdata->skipLeadingZeros();
- addenddata->skipLeadingZeros();
+ answer._cleanup();
+ addend._cleanup();
answer+=addend;
return answer;
@@ -151,6 +150,5 @@
return r;
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/primes.cpp
==============================================================================
--- sandbox/xint/src/primes.cpp (original)
+++ sandbox/xint/src/primes.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -21,7 +21,6 @@
namespace boost {
namespace xint {
-namespace core {
namespace {
@@ -88,7 +87,7 @@
\returns 1 if \c n seems to be prime, 0 if it isn't, or -1 if the provided
callback function cancelled the operation.
-\exception std::invalid_argument if \c n is less than 2.
+\exception exceptions::invalid_argument if \c n is less than 2.
\remarks
This function uses the Rabin-Miller probabilistic primality test. There is an
@@ -100,8 +99,8 @@
\see \ref primes
*/
int is_prime(const integer& n, callback_t callback) {
- if (n < 2) throw std::invalid_argument("xint::is_prime cannot test numbers "
- "below 2");
+ if (n < 2) throw exceptions::invalid_argument("xint::is_prime cannot test "
+ "numbers below 2");
// First we trial-divide it by the primes below 2000
static const std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
@@ -112,7 +111,7 @@
// a few times to see if it's actually (probably) prime.
for (int count=0; count<5; ++count) {
unsigned int k=detail::get_random();
- int isP=isProbablePrimeBaseB(n, abs(k), callback);
+ int isP=isProbablePrimeBaseB(n, k, callback);
if (isP <= 0) return isP;
}
return 1; // Appears to be prime!
@@ -128,7 +127,7 @@
\returns A randomly-generated prime integer with the specified number of bits,
or zero if the provided callback function cancelled the operation.
-\exception std::invalid_argument if \c size_in_bits is less than two.
+\exception exceptions::invalid_argument if \c size_in_bits is less than two.
\note This function uses xint::is_prime. See the description of it for details
of its limitations.
@@ -141,8 +140,8 @@
\see \ref primes
*/
integer random_prime(size_t size_in_bits, callback_t callback) {
- if (size_in_bits < 2) throw std::invalid_argument("cannot create prime "
- "numbers smaller than two bits");
+ if (size_in_bits < 2) throw exceptions::invalid_argument("cannot create "
+ "prime numbers smaller than two bits");
// Call the callback for the first time
if (callback && !callback()) return integer::zero();
@@ -159,6 +158,5 @@
}
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/primitives.cpp
==============================================================================
--- sandbox/xint/src/primitives.cpp (original)
+++ sandbox/xint/src/primitives.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -16,7 +16,6 @@
*/
#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
#include <cassert>
namespace boost {
@@ -24,8 +23,6 @@
using namespace detail;
-namespace core {
-
/*! \brief Returns the absolute value of an integer.
\param[in] n The integer to operate on.
@@ -44,8 +41,7 @@
*/
integer negate(const integer& n) {
integer nn(n);
- nn._make_unique();
- nn._get_data()->negate();
+ nn._set_negative(!nn._get_negative());
return nn;
}
@@ -62,13 +58,12 @@
else if (sign2==0) return n1;
else return subtract(n1, -n2);
} else {
- const data_t *n1data=n1._get_data(), *n2data=n2._get_data();
- if (n1data->mLength < n2data->mLength) std::swap(n1data, n2data);
+ bool swap(n1._get_length() < n2._get_length());
+ const integer &larger(swap ? n2 : n1), &smaller(swap ? n1 : n2);
integer r;
- data_t *rdata=r._get_data();
- rdata->copy(n1data, 1);
- rdata->add(*n2data);
+ r._duplicate(larger, 1);
+ r._add(smaller);
return r;
}
}
@@ -86,15 +81,13 @@
else if (sign2 == 0) return n1;
else return add(n1, -n2);
} else {
- bool invert=(sign1 == (n1 < n2 ? 1 : -1));
- const data_t *n1data=n1._get_data(), *n2data=n2._get_data();
- if (invert) std::swap(n1data, n2data);
+ bool swap=(sign1 == (n1 < n2 ? 1 : -1));
+ const integer &larger(swap ? n2 : n1), &smaller(swap ? n1 : n2);
integer r;
- data_t *rdata=r._get_data();
- rdata->copy(n1data);
- rdata->subtract(*n2data);
- return (invert ? -r : r);
+ r._duplicate(larger, 1);
+ r._subtract(smaller);
+ return (swap ? -r : r);
}
}
@@ -112,27 +105,28 @@
int nsign=n.sign(), bysign=by.sign();
if (nsign==0 || bysign==0) return integer::zero();
- const data_t *ndata=n._get_data(), *bydata=by._get_data();
- if (ndata == bydata) return sqr(n);
+ const digit_t *ndigits=n._get_digits(), *bydigits=by._get_digits();
+ if (ndigits==bydigits) return sqr(n);
+ size_t nlen=n._get_length(), bylen=by._get_length();
// In multiplication, we know that the answer will be less than or equal to
// the sum of the lengths of the operands.
integer answer;
- data_t *answerdata=answer._get_data();
- answerdata->alloc(ndata->mLength + bydata->mLength);
+ answer._realloc(nlen + bylen);
+ digit_t *adigits=answer._get_digits();
// Now multiply the digits, starting at the least-significant digit.
- const digit_t *d1 = ndata->digits, *d1e = d1 + ndata->mLength;
- const digit_t *d2e = bydata->digits + bydata->mLength;
+ const digit_t *d1 = ndigits, *d1e = d1 + nlen;
+ const digit_t *d2e = bydigits + bylen;
for (int digit1=0; d1<d1e; ++digit1, ++d1) {
- const digit_t *d2=bydata->digits;
+ const digit_t *d2=bydigits;
for (int digit2=0; d2<d2e; ++digit2, ++d2) {
// First multiply the two digits
doubledigit_t t=doubledigit_t(*d1) * *d2;
// Now add the result to the answer.
int carry=0;
- digit_t *a = answerdata->digits + digit1 + digit2;
+ digit_t *a = adigits + digit1 + digit2;
doubledigit_t addt=doubledigit_t(*a) + (t & digit_mask);
if (addt >= digit_overflowbit) carry=1;
*a++=static_cast<digit_t>(addt);
@@ -150,42 +144,42 @@
}
answer._set_negative(nsign != bysign);
- answer._get_data()->skipLeadingZeros();
+ answer._cleanup();
return answer;
}
namespace {
std::pair<integer, integer> divideBySingleDigit(const integer& d1, digit_t d2) {
- const data_t *d1data=d1._get_data();
+ size_t d1len=d1._get_length();
+ const digit_t *d1digits=d1._get_digits();
integer quotient, remainder;
- data_t *qdata=quotient._get_data(), *rdata=remainder._get_data();
- qdata->alloc(d1data->mLength);
- rdata->alloc(1);
+ quotient._realloc(d1len);
+ remainder._realloc(1);
doubledigit_t a=0;
const doubledigit_t lomask(digit_mask);
const doubledigit_t himask(doubledigit_t(digit_mask) << bits_per_digit);
- int m = int(d1data->mLength) - 1;
- const digit_t *d1p=d1data->digits+m;
- digit_t *qp=qdata->digits+m;
+ int m = int(d1len) - 1;
+ const digit_t *d1p=d1digits+m;
+ digit_t *qp=quotient._get_digits()+m;
for (int i = m; i >= 0; --i, --d1p, --qp) {
a = (a & ~lomask) | *d1p;
*qp = static_cast<digit_t>(a / d2);
a = (a & ~himask) | ((a % d2) << bits_per_digit);
}
- rdata->digits[0] = static_cast<digit_t>((a & himask) >>
+ remainder._get_digits()[0] = static_cast<digit_t>((a & himask) >>
bits_per_digit);
- qdata->skipLeadingZeros();
- rdata->skipLeadingZeros();
+ quotient._cleanup();
+ remainder._cleanup();
return std::make_pair(quotient, remainder);
}
std::pair<integer, integer> subDivide(integer d1, integer d2) {
- const digit_t *byDigits = d2._get_data()->digits;
+ const digit_t *byDigits = d2._get_digits();
// The normalization step
digit_t d = static_cast<digit_t>(digit_overflowbit /
@@ -195,16 +189,16 @@
d2 *= d;
// Gotta reset this
- byDigits = d2._get_data()->digits;
+ byDigits = d2._get_digits();
}
assert(d2._get_digit(d2._get_length()-1) >= digit_overflowbit / 2);
integer quotient, r(d1);
- data_t *qdata=quotient._get_data();
size_t n=d2._get_length(), m=d1._get_length() - n;
size_t i=m+n, j=m;
- qdata->alloc(j+1);
+ quotient._realloc(j+1);
+ digit_t *qdigits=quotient._get_digits();
r._make_unique();
do {
@@ -224,18 +218,18 @@
if (r < bq) { --q; bq -= d2; }
integer rtemp((r >> (bits_per_digit * (i-n))) - bq);
- data_t *rdata=r._get_data();
- digit_t *rdigits=rdata->digits;
+ digit_t *rdigits=r._get_digits();
- for (size_t x=0; x<=n && i-n+x < rdata->mLength; ++x)
+ size_t rlen=r._get_length();
+ for (size_t x=0; x<=n && i-n+x < rlen; ++x)
rdigits[i-n+x]=rtemp._get_digit(x, true);
- rdata->skipLeadingZeros();
+ r._cleanup();
- qdata->digits[j--]=digit_t(q);
+ qdigits[j--]=digit_t(q);
} while (--i >= n);
- qdata->skipLeadingZeros();
+ quotient._cleanup();
if (d > 1) {
// Denormalization step. This requires a division by a single digit_t.
@@ -254,7 +248,7 @@
\returns The integer value of \c dividend divided by \c divisor.
-\exception xint::divide_by_zero if \c divisor is zero.
+\exception exceptions::divide_by_zero if \c divisor is zero.
*/
integer divide(const integer& dividend, const integer& divisor) {
return divide_r(dividend, divisor).first;
@@ -269,11 +263,11 @@
\returns An \c std::pair containing the quotient and remainder of \c d1 divided
by \c d2.
-\exception xint::divide_by_zero if \c d2 is zero.
+\exception exceptions::divide_by_zero if \c d2 is zero.
*/
std::pair<integer, integer> divide_r(const integer& d1, const integer& d2) {
int sign1=d1.sign(), sign2=d2.sign();
- if (sign2==0) throw divide_by_zero();
+ if (sign2==0) throw exceptions::divide_by_zero();
int comp=compare(d1, d2, true);
if (comp<0) {
@@ -298,13 +292,12 @@
return a;
};
- if (d2._get_data()->mLength == 1) {
- return divideBySingleDigit(d1, d2._get_data()->digits[0]);
+ if (d2._get_length() == 1) {
+ return divideBySingleDigit(d1, d2._get_digit(0));
} else {
return subDivide(d1, d2);
}
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/random.cpp
==============================================================================
--- sandbox/xint/src/random.cpp (original)
+++ sandbox/xint/src/random.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -22,13 +22,16 @@
#include <windows.h>
#endif
-#include "../boost/xint/xint.hpp"
-#include "../boost/xint/xint_data_t.hpp"
+#include "../boost/xint/integer.hpp"
+#include "../boost/xint/random.hpp"
+#include "../boost/xint/exceptions.hpp"
#include <vector>
#include <sstream>
#include <fstream>
#include <ctime>
+#include <memory> // for auto_ptr
#include <boost/random/mersenne_twister.hpp>
+#include <boost/static_assert.hpp> //! \todo Move to random.cpp?
#ifdef XINT_THREADSAFE
#include <boost/thread.hpp>
@@ -116,7 +119,7 @@
if (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll, "SystemFunction036"));
if (fn == 0) {
destroy();
- throw no_strong_random();
+ throw exceptions::no_strong_random();
}
}
@@ -125,7 +128,7 @@
result_type operator()() {
result_type r=0;
if (!fn(&r, sizeof(result_type)))
- throw no_strong_random("RtlGenRandom failed");
+ throw exceptions::no_strong_random("RtlGenRandom failed");
return r;
}
@@ -144,12 +147,13 @@
// This should be supported under most non-Windows systems. Note
// that we're using /dev/urandom, not /dev/random -- /dev/random is
// more secure, but it can be VERY slow.
- if (!rng) throw no_strong_random();
+ if (!rng) throw exceptions::no_strong_random();
}
result_type operator()() {
int r=rng.get();
- if (r==EOF) throw no_strong_random("/dev/urandom returned EOF");
+ if (r==EOF) throw exceptions::no_strong_random("/dev/urandom "
+ "returned EOF");
return static_cast<result_type>(r);
}
@@ -182,7 +186,6 @@
// Returns a positive (unless told otherwise) integer between zero and
// (1<<bits)-1, inclusive
-namespace core {
/*! \brief Generates a random integer with specific attributes.
\param[in] bits The maximum number of bits that you want the returned number to
@@ -223,10 +226,10 @@
size_t index=(bits/bits_per_digit);
digit_t mask=(digit_t(1) << (bits % bits_per_digit))-1;
if (mask==0) { mask=digit_mask; --index; }
- p._get_data()->digits[index] &= mask;
- for (digit_t *i=p._get_data()->digits+index+1,
- *ie=p._get_data()->digits+p._get_data()->mLength; i<ie; ++i) *i=0;
- p._get_data()->skipLeadingZeros();
+ p._get_digits()[index] &= mask;
+ for (digit_t *i=p._get_digits()+index+1,
+ *ie=p._get_digits()+p._get_length(); i<ie; ++i) *i=0;
+ p._cleanup();
if (high_bit_on) setbit(p, bits-1);
if (low_bit_on) setbit(p, 0);
@@ -234,6 +237,6 @@
return p;
}
-} // namespace core
+
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/roots.cpp
==============================================================================
--- sandbox/xint/src/roots.cpp (original)
+++ sandbox/xint/src/roots.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -19,7 +19,6 @@
namespace boost {
namespace xint {
-namespace core {
/*! \brief Calculate the square root of \c an integer.
@@ -29,11 +28,11 @@
If \c n is not a perfect square, then this value will not be the exact square
root.
-\exception xint::cannot_represent if \c n is negative.
+\exception exceptions::cannot_represent if \c n is negative.
*/
integer sqrt(const integer& n) {
- if (n.sign() < 0) throw cannot_represent("library cannot represent "
- "imaginary values (tried to take sqrt of negative number)");
+ if (n.sign() < 0) throw exceptions::cannot_represent("library cannot "
+ "represent imaginary values (tried to take sqrt of negative number)");
if (n.sign() == 0) return integer::zero();
// Initial guess is half the length of n, in bits
@@ -50,6 +49,5 @@
return guess;
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/test/test_add.cpp
==============================================================================
--- sandbox/xint/test/test_add.cpp (original)
+++ sandbox/xint/test/test_add.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -21,8 +21,6 @@
namespace boost {
namespace xint {
-using namespace test;
-
using std::endl;
using std::dec;
using std::hex;
@@ -91,5 +89,17 @@
}
}
+BOOST_AUTO_TEST_CASE(testNegativeZero) {
+ integer n(5), m(5), a(n-m);
+ BOOST_CHECK_EQUAL(a, 0);
+ BOOST_CHECK_EQUAL(a.sign(), 0);
+ BOOST_CHECK_EQUAL(a.sign(true), 1);
+
+ a=-a;
+ BOOST_CHECK_EQUAL(a, 0);
+ BOOST_CHECK_EQUAL(a.sign(), 0);
+ BOOST_CHECK_EQUAL(a.sign(true), -1);
+}
+
} // namespace xint
} // namespace boost
Modified: sandbox/xint/test/test_bit_manipulations.cpp
==============================================================================
--- sandbox/xint/test/test_bit_manipulations.cpp (original)
+++ sandbox/xint/test/test_bit_manipulations.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -22,8 +22,6 @@
namespace boost {
namespace xint {
-using namespace test;
-
using std::hex;
BOOST_AUTO_TEST_CASE(testBitManipulations) {
Modified: sandbox/xint/test/test_convert.cpp
==============================================================================
--- sandbox/xint/test/test_convert.cpp (original)
+++ sandbox/xint/test/test_convert.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -27,8 +27,6 @@
namespace boost {
namespace xint {
-using namespace test;
-
BOOST_AUTO_TEST_CASE(testConvert) {
// Come up with a sufficiently complex number to test with. It must be
// greater than one digit's worth of data, and have at least one leading
@@ -72,22 +70,19 @@
}
}
- BOOST_REQUIRE(exceptions_allowed());
-
// Test base numbers that shouldn't be allowed
const std::vector<int> testBases=boost::assign::list_of(-1)(0)(1)(37);
for (std::vector<int>::const_iterator b=testBases.begin();
b!=testBases.end(); ++b)
- BOOST_CHECK_THROW(to_string(n, *b), invalid_base);
+ BOOST_CHECK_THROW(to_string(n, *b), exceptions::invalid_base);
- boost::int32_t nSrc=1234567890;
+ boost::int32_t nSrc = 1234567890;
n=nSrc;
- boost::int32_t nTgt=to<boost::int32_t>(n);
+ boost::int32_t nTgt = to<boost::int32_t>(n);
BOOST_CHECK_EQUAL(nTgt, nSrc);
{
- token t=block_exceptions();
- BOOST_CHECK_NO_THROW(blockable::integer badConversion("abcdefg", 16));
+ BOOST_CHECK_NO_THROW(nothrow_integer badConversion("abcdefg", 16));
}
{
Modified: sandbox/xint/test/test_divide.cpp
==============================================================================
--- sandbox/xint/test/test_divide.cpp (original)
+++ sandbox/xint/test/test_divide.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -25,8 +25,6 @@
namespace boost {
namespace xint {
-using namespace test;
-
using std::endl;
namespace {
Modified: sandbox/xint/test/test_main.cpp
==============================================================================
--- sandbox/xint/test/test_main.cpp (original)
+++ sandbox/xint/test/test_main.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -10,7 +10,7 @@
Previously, this file contained the function to run all of the self-tests
for the library. Since converting to Boost.Test, it's simply a place to
- declare the auto-generated main function.
+ declare the auto-generated main function, or a custom one.
Note that not all functions have a test; all the primitives do, but the rest
only warrant testing if I'm refactoring them, or if I had problems while
@@ -19,6 +19,16 @@
#include <boost/xint/xint.hpp>
-#define BOOST_TEST_MAIN
-#define BOOST_TEST_DYN_LINK
-#include <boost/test/unit_test.hpp>
+#if 1
+ #define BOOST_TEST_MAIN
+ #define BOOST_TEST_DYN_LINK
+ #include <boost/test/unit_test.hpp>
+#else
+ #include <iostream>
+
+ // For running one-off tests
+ int main() {
+ using namespace boost::xint::core;
+ std::cout << boost::xint::core::pow(19, 1412);
+ }
+#endif
Modified: sandbox/xint/test/test_monty.cpp
==============================================================================
--- sandbox/xint/test/test_monty.cpp (original)
+++ sandbox/xint/test/test_monty.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -12,7 +12,7 @@
*/
#include <boost/xint/xint.hpp>
-#include <boost/xint/xint_monty.hpp>
+#include <boost/xint/monty.hpp>
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
@@ -23,7 +23,6 @@
namespace boost {
namespace xint {
-namespace core {
using std::endl;
@@ -134,6 +133,5 @@
}
}
-} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/test/test_multiply.cpp
==============================================================================
--- sandbox/xint/test/test_multiply.cpp (original)
+++ sandbox/xint/test/test_multiply.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -22,13 +22,13 @@
namespace boost {
namespace xint {
-using namespace test;
-
using std::endl;
namespace {
void _test(int section, int test, integer n, integer m) {
+ //BOOST_MESSAGE("testMultiply " << section << ", " << test);
+
integer result(m*n);
if (m.sign()==0 || n.sign()==0) BOOST_CHECK_EQUAL(result, 0);
else {
Modified: sandbox/xint/test/test_streams.cpp
==============================================================================
--- sandbox/xint/test/test_streams.cpp (original)
+++ sandbox/xint/test/test_streams.cpp 2010-04-17 20:45:43 EDT (Sat, 17 Apr 2010)
@@ -23,8 +23,6 @@
namespace boost {
namespace xint {
-using namespace test;
-
namespace {
bool testStreamOut(std::string name, std::stringstream& str, const integer& n, std::string expected) {
@@ -152,7 +150,8 @@
BOOST_CHECK_EQUAL(test, 123); // Shouldn't have touched it
if (!!str) BOOST_ERROR("stream error signal wasn't set");
} catch (std::exception& e) {
- std::string err=std::string("testStreams: erroneous input stream exception '")+e.what()+"'";
+ std::string err=std::string("testStreams: erroneous input stream "
+ "exception '")+e.what()+"'";
BOOST_ERROR(err);
}
@@ -160,10 +159,10 @@
str.flags(defaultFlags);
str.clear();
- str << blockable::integer::nan();
+ str << nothrow_integer::nan();
std::string temp=str.str();
- blockable::integer test;
+ nothrow_integer test;
str.str(temp);
str >> test;
if (!test.is_nan()) BOOST_ERROR("testStream: isNaN test failed");
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk